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 相关文章推荐
javascript 日期时间 转换的方法
Feb 21 Javascript
jQuery使用load()方法载入另外一个网页文件内的指定标签内容到div标签的方法
Mar 25 Javascript
详解JavaScript中setSeconds()方法的使用
Jun 11 Javascript
PHP结合jQuery实现红蓝投票功能特效
Jul 22 Javascript
AngularJS 如何在控制台进行错误调试
Jun 07 Javascript
AngularJS基础 ng-mouseleave 指令详解
Aug 02 Javascript
JS验证字符串功能
Feb 22 Javascript
Vue服务端渲染和Vue浏览器端渲染的性能对比(实例PK )
Mar 31 Javascript
JS实现监控微信小程序的原理
Jun 15 Javascript
layui实现二维码弹窗、并下载到本地的方法
Sep 25 Javascript
vue实现锚点定位功能
Jun 29 Vue.js
Vue全局事件总线你了解吗
Feb 24 Vue.js
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循环跳出的问题
2013/07/01 PHP
php运行提示:Fatal error Allowed memory size内存不足的解决方法
2014/12/17 PHP
php实现的简单美国商品税计算函数
2015/07/13 PHP
php session 写入数据库
2016/02/13 PHP
Zend Framework教程之视图组件Zend_View用法详解
2016/03/05 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析
2018/04/20 PHP
JS 字符串连接[性能比较]
2009/05/10 Javascript
jQuery版本升级踩坑大全
2016/01/12 Javascript
JavaScript提高性能知识点汇总
2016/01/15 Javascript
浅析Javascript中bind()方法的使用与实现
2016/04/29 Javascript
AngularJS模块详解及示例代码
2016/08/17 Javascript
关于Vue.js一些问题和思考学习笔记(1)
2016/12/02 Javascript
JS简单实现数组去重的方法示例
2017/03/27 Javascript
JavaScript简单实现的仿微博留言功能示例
2019/01/17 Javascript
详解vuex中action何时完成以及如何正确调用dispatch的思考
2019/01/21 Javascript
在vue中使用setInterval的方法示例
2019/04/16 Javascript
简介JavaScript错误处理机制
2020/08/04 Javascript
Vue 禁用浏览器的前进后退操作
2020/09/04 Javascript
[53:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Magma BO3 第一场 1月31日
2021/03/11 DOTA
python操作gmail实例
2015/01/14 Python
Python实现抓取页面上链接的简单爬虫分享
2015/01/21 Python
Python中%是什么意思?python中百分号如何使用?
2018/03/20 Python
Python 实现日志同时输出到屏幕和文件
2020/02/19 Python
解决Python spyder显示不全df列和行的问题
2020/04/20 Python
tensorflow 大于某个值为1,小于为0的实例
2020/06/30 Python
python字典通过值反查键的实现(简洁写法)
2020/09/30 Python
HTML5资源预加载(Link prefetch)详细介绍(给你的网页加速)
2014/05/07 HTML / CSS
html5 更新图片颜色示例代码
2014/07/29 HTML / CSS
飞利浦西班牙官方网站:Philips西班牙
2020/02/17 全球购物
GOLFINO英国官网:高尔夫服装
2020/04/11 全球购物
技校毕业生的自我评价
2013/12/27 职场文书
财务部总监岗位职责
2014/03/12 职场文书
装修公司管理制度
2015/08/05 职场文书
go语言使用Casbin实现角色的权限控制
2021/06/26 Golang