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 相关文章推荐
FormValidate 表单验证功能代码更新并提供下载
Aug 23 Javascript
jquery操作复选框(checkbox)的12个小技巧总结
Feb 04 Javascript
关注jquery技巧提高jquery技能(前端开发必学)
Nov 02 Javascript
jquery trigger函数执行两次的解决方法
Feb 29 Javascript
jQuery插件AjaxFileUpload实现ajax文件上传
May 05 Javascript
js实现多张图片延迟加载效果
Jul 17 Javascript
jQuery选取所有复选框被选中的值并用Ajax异步提交数据的实例
Aug 04 jQuery
图片懒加载imgLazyLoading.js使用详解
Sep 15 Javascript
Vue2 监听属性改变watch的实例代码
Aug 27 Javascript
微信小程序自定义键盘 内部虚拟支付
Dec 20 Javascript
Vue实现星级评价效果实例详解
Dec 30 Javascript
一小时迅速入门Mybatis之bind与多数据源支持 Java API
Sep 15 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
php实现给图片加灰色半透明效果的方法
2014/10/20 PHP
PHP中的一些常用函数收集
2015/05/26 PHP
PHP调用微博接口实现微博登录的方法示例
2018/09/22 PHP
tp5.1 框架数据库-数据集操作实例分析
2020/05/26 PHP
KindEditor在php环境下上传图片功能集成的方法示例
2020/07/20 PHP
PHPstorm启用自动换行的方法详解(IDE)
2020/09/17 PHP
JS下载文件|无刷新下载文件示例代码
2014/04/17 Javascript
JavaScript中document对象使用详解
2015/01/06 Javascript
探寻JavaScript中this指针指向
2016/04/23 Javascript
Treegrid的动态加载实例代码
2016/04/29 Javascript
js编写当天简单日历效果【实现代码】
2016/05/03 Javascript
在javascript中,null>=0 为真,null==0却为假,null的值详解
2017/02/22 Javascript
setTimeout函数的神奇使用
2017/02/26 Javascript
详解angular用$sce服务来过滤HTML标签
2017/04/11 Javascript
angularjs实现猜数字大小功能
2020/05/20 Javascript
[01:21]DOTA2 新英雄 森海飞霞
2020/12/18 DOTA
Python中的并发编程实例
2014/07/07 Python
Python实现提取谷歌音乐搜索结果的方法
2015/07/10 Python
Django1.7+python 2.78+pycharm配置mysql数据库
2016/10/09 Python
详解python开发环境搭建
2016/12/16 Python
Python实现输出程序执行进度百分比的方法
2017/09/16 Python
浅谈tensorflow中几个随机函数的用法
2018/07/27 Python
Python  unittest单元测试框架的使用
2018/09/08 Python
python 追踪except信息方式
2020/04/25 Python
Python json格式化打印实现过程解析
2020/07/21 Python
CSS3 三维变形实现立体方块特效源码
2016/12/15 HTML / CSS
澳大利亚在线床零售商:Bedworks
2020/09/01 全球购物
浙大毕业生自荐信
2014/01/26 职场文书
安全环保标语
2014/06/09 职场文书
售后客服工作职责
2014/06/16 职场文书
机关驾驶员违规检讨书
2014/09/13 职场文书
总经理岗位职责范本
2015/04/01 职场文书
2015年社区民政工作总结
2015/04/21 职场文书
事业单位工作人员岗前培训心得体会
2016/01/08 职场文书
详解PHP设计模式之依赖注入模式
2021/05/25 PHP
SpringBoot项目多数据源及mybatis 驼峰失效的问题解决方法
2022/07/07 Java/Android