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 相关文章推荐
Jquery 例外被抛出且未被接住原因介绍
Sep 04 Javascript
JavaScript动态创建div属性和样式示例代码
Oct 09 Javascript
面向对象设计模式的核心法则
Nov 10 Javascript
jquery select 设置默认选中的示例代码
Feb 07 Javascript
JQuery boxy插件在IE中边角图片不显示问题的解决
May 20 Javascript
JQuery节点元素属性操作方法
Jun 11 Javascript
jquery获取复选框的值的简单实例
May 26 Javascript
Vue.js组件tab实现选项卡切换
Mar 23 Javascript
ES6学习笔记之正则表达式和字符串正则方法分析
Apr 25 Javascript
JavaScript监听手机物理返回键的两种解决方法
Aug 14 Javascript
零基础之Node.js搭建API服务器的详解
Mar 08 Javascript
js事件触发操作实例分析
Jun 21 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
无JS,完全php面向过程数据分页实现代码
2012/08/27 PHP
php计算程序运行时间的简单例子分享
2014/05/10 PHP
深入理解PHP类的自动载入机制
2016/09/16 PHP
php 可变函数使用小结
2018/06/12 PHP
js显示文本框提示文字的方法
2015/05/07 Javascript
JS实现仿Windows7风格的网页右键菜单效果代码
2015/09/11 Javascript
JavaScript过滤字符串中的中文与空格方法汇总
2016/03/07 Javascript
Bootstrap富文本组件wysiwyg数据保存到mysql的方法
2016/05/09 Javascript
获取JS中网页各种高宽与位置的方法总结
2016/07/27 Javascript
vue与TypeScript集成配置最简教程(推荐)
2017/10/17 Javascript
VSCode配置react开发环境的步骤
2017/12/27 Javascript
vue.js获得当前元素的文字信息方法
2018/03/09 Javascript
vue实现通讯录功能
2018/07/14 Javascript
layer.open 子页面弹出层向父页面传输数据的例子
2019/09/26 Javascript
微信小程序 scroll-view 实现锚点跳转功能
2019/12/12 Javascript
在vue-cli创建的项目中使用sass操作
2020/08/10 Javascript
[00:34]DOTA2上海特级锦标赛 VG战队宣传片
2016/03/04 DOTA
[02:32]【DOTA2亚洲邀请赛】iceice,梦开始的地方
2017/03/13 DOTA
用python 制作图片转pdf工具
2015/01/30 Python
python制作小说爬虫实录
2017/08/14 Python
对python创建及引用动态变量名的示例讲解
2018/11/10 Python
Django之Mode的外键自关联和引用未定义的Model方法
2018/12/15 Python
python3爬虫学习之数据存储txt的案例详解
2019/04/24 Python
python 使用while写猜年龄小游戏过程解析
2019/10/07 Python
python通过SSH登陆linux并操作的实现
2019/10/10 Python
用OpenCV将视频分解成单帧图片,图片合成视频示例
2019/12/10 Python
pytorch torch.nn.AdaptiveAvgPool2d()自适应平均池化函数详解
2020/01/03 Python
在pycharm中使用matplotlib.pyplot 绘图时报错的解决
2020/06/01 Python
Python编写万花尺图案实例
2021/01/03 Python
详解如何将 Canvas 绘制过程转为视频
2021/01/25 HTML / CSS
学习标兵获奖感言
2014/02/20 职场文书
学校食堂食品安全承诺书
2015/04/29 职场文书
大学生暑假实习总结
2015/07/13 职场文书
Java并发编程之原子性-Atomic的使用
2022/03/16 Java/Android
日本动漫十大公认神作:第五现已全网禁播,《死亡笔记》在榜
2022/03/18 日漫
解决Oracle数据库用户密码过期
2022/05/11 Oracle