javascript中 try catch用法


Posted in Javascript onAugust 16, 2015

先看个实例

<input id='b1' type='button' value='按钮'/>
<script>
window.onload=function(){
var oBtn=document.getElementById("b1");
function mto(){
alert("123");
};

try //非IE
{
oBtn.attachEvent("onclick",mto,false);

}
catch(e)//IE
{
oBtn.addEventListener("click",mto,false);
}
};
</script>

注意的是:

addEventListener和attachEvent的区别在第一个参数 前者是click 后者是onclick

addEventListener 在其元素所在的元素作用域中运行

attachEvent在全局作用域中运行(this=window)

Try...Catch 语句

try...catch 可以测试代码中的错误。try 部分包含需要运行的代码,而 catch 部分包含错误发生时运行的代码。
语法:

try
{
//在此运行代码
}
catch(err)
{
//在此处理错误
}

注意:try...catch 使用小写字母。大写字母会出错。

try...catch...finally    语句   
    
   为    JScript    实现错误处理。   

try  {  
     tryStatements}  
  catch(exception){  
     catchStatements}  
  finally  {  
     finallyStatements}

   =============   

参数   

   tryStatement    
   必选项。可能发生错误的语句。    
   exception    
   必选项。任何变量名。exception    的初始化值是扔出的错误的值。    
   catchStatement    
   可选项。处理在相关联的    tryStatement    中发生的错误的语句。    
   finallyStatements    
   可选项。在所有其他过程发生之后无条件执行的语句。     

说明  

   try...catch...finally    语句提供了一种方法来处理可能发生在给定代码块中的某些或全部错误,同时仍保持代码的运行。如果发生了程序员没有处理的错误,JScript    只给用户提供它的普通错误信息,就好象没有错误处理一样。   

tryStatements    参数包含可能发生错误的代码,而    catchStatement    则包含处理任何发生了的错误的代码。如果在    tryStatements    中发生了一个错误,则程序控制被传给    catchStatements    来处理。exception    的初始化值是发生在    tryStatements    中的错误的值。如果错误不发生,则不执行    catchStatements。   

如果在与发生错误的    tryStatements    相关联的    catchStatements    中不能处理该错误,则使用    throw    语句来传播、或重新扔出这个错误给更高级的错误处理程序。   

在执行完    tryStatements    中的语句,并在    catchStatements    的所有错误处理发生之后,可无条件执行    finallyStatements    中的语句。   

请注意,即使在    try    或    catch    块中返回一个语句,或在    catch    块重新扔出一个错误,仍然会执行    finallyStatements    编码。一般将确保    finallyStatments    的运行,除非存在未处理的错误。(例如,在    catch    块中发生运行时错误。)。  

示例   

   下面的例子阐明了JScript    特例处理是如何进行的。   

try  {  
    print("Outer  try  running..");  
    try  {  
      print("Nested  try  running...");  
      throw  "an  error";  
    }  
    catch(e)  {  
      print("Nested  catch  caught  "  +  e);  
      throw  e  +  "  re-thrown";  
    }  
    finally  {  
      print("Nested  finally  is  running...");  
    }     
  }  
  catch(e)  {  
    print("Outer  catch  caught  "  +  e);  
  }  
  finally  {  
    print("Outer  finally  running");  
  }  
  //  Windows  Script  Host  作出该修改从而得出  WScript.Echo(s)  
  function  print(s){  
     document.write(s);  
  }

   将得出以下结果:   

   Outer    try    running..  
   Nested    try    running...  
   Nested    catch    caught    an    error  
   Nested    finally    is    running...  
   Outer    catch    caught    an    error    re-thrown  
   Outer    finally    running

如下是Javascript的例外处理的一个实例。

var array = null;
try {
  document.write(array[0]);
} catch(err) {
  document.writeln("Error name: " + err.name + "");
  document.writeln("Error message: " + err.message);
}
finally{
  alert("object is null");
}

程序执行过程

1. array[0]的时候由于没有创建array数组,array是个空对象,程序中调用array[0]就会产生object is null的异常
2. catch(err)语句捕获到这个异常通过err.name打印了错误类型,err.message打印了错误的详细信息.
3. finally类似于java的finally,无论有无异常都会执行.

现总结Error.name的六种值对应的信息:

1. EvalError:eval()的使用与定义不一致
2. RangeError:数值越界
3. ReferenceError:非法或不能识别的引用数值
4. SyntaxError:发生语法解析错误
5. TypeError:操作数类型错误
6. URIError:URI处理函数使用不当

Javascript 相关文章推荐
srcElement表格样式
Sep 03 Javascript
java与javascript之间json格式数据互转介绍
Oct 29 Javascript
Javascript仿PHP $_GET获取URL中的参数
May 12 Javascript
jquery ajax请求方式与提示用户正在处理请稍等
Sep 01 Javascript
JavaScript多并发问题如何处理
Oct 28 Javascript
小巧强大的jquery layer弹窗弹层插件
Dec 06 Javascript
javascript自执行函数
Feb 10 Javascript
node.js中fs文件系统目录操作与文件信息操作
Feb 24 Javascript
vue结合Echarts实现点击高亮效果的示例
Mar 17 Javascript
浅谈Postman解决token传参的问题
Mar 31 Javascript
vue动态注册组件实例代码详解
May 30 Javascript
vue 开发企业微信整合案例分析
Dec 02 Javascript
javascript中undefined与null的区别
Aug 16 #Javascript
swtich/if...else的替代语句
Aug 16 #Javascript
javascript数组去重的六种方法汇总
Aug 16 #Javascript
JS+CSS实现下拉列表框美化效果(3款)
Aug 15 #Javascript
js时钟翻牌效果实现代码分享
Jul 31 #Javascript
js实现点击文本框显示日期选择器特效代码分享
May 21 #Javascript
jQuery树形下拉菜单特效代码分享
Aug 15 #Javascript
You might like
php5.3 废弃函数小结
2010/05/16 PHP
json的键名为数字时的调用方式(示例代码)
2013/11/15 PHP
ucenter中词语过滤原理分析
2016/07/13 PHP
PHP实现单条sql执行多个数据的insert语句方法
2019/10/11 PHP
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(下:动画篇)
2010/03/24 Javascript
javascript之bind使用介绍
2011/10/09 Javascript
JavaScript打字小游戏代码
2011/12/26 Javascript
详解JavaScript中的事件流和事件处理程序
2016/05/20 Javascript
Angularjs 自定义服务的三种方式(推荐)
2016/08/02 Javascript
jQuery弹出遮罩层效果完整示例
2016/09/13 Javascript
jQuery Masonry瀑布流插件使用方法详解
2017/01/18 Javascript
基于JavaScript实现拖动滑块效果
2017/02/16 Javascript
基于JavaScript实现无缝滚动效果
2017/07/21 Javascript
centos 上快速搭建ghost博客方法分享
2018/05/23 Javascript
原生JS实现动态添加新元素、删除元素方法
2019/05/05 Javascript
微信小程序实现蒙版弹出窗功能
2019/09/17 Javascript
vue 组件内获取actions的response方式
2019/11/08 Javascript
[01:20]2018DOTA2亚洲邀请赛总决赛战队Mineski晋级之路
2018/04/07 DOTA
[03:08]TI9战队档案 - Vici Gaming
2019/08/20 DOTA
python基础教程之分支、循环简单用法
2016/06/16 Python
python中WSGI是什么,Python应用WSGI详解
2017/11/24 Python
Python处理中文标点符号大集合
2018/05/14 Python
利用Python如何将数据写到CSV文件中
2018/06/05 Python
python使用turtle库绘制奥运五环
2020/02/24 Python
如何用python处理excel表格
2020/06/09 Python
python基于socket模拟实现ssh远程执行命令
2020/12/05 Python
canvas 基础之图像处理的使用
2020/04/10 HTML / CSS
维多利亚的秘密阿联酋官网:Victoria’s Secret阿联酋
2019/12/07 全球购物
保安拾金不昧表扬信
2014/01/15 职场文书
《爱如茉莉》教后反思
2014/04/12 职场文书
中国梦演讲稿教师篇
2014/04/23 职场文书
优秀团员自我评价范文
2014/04/23 职场文书
学习雷锋精神演讲稿
2014/05/10 职场文书
销售团队获奖感言
2014/08/14 职场文书
为什么MySQL 删除表数据 磁盘空间还一直被占用
2021/10/16 MySQL
Nginx 配置 HTTPS的详细过程
2022/05/30 Servers