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和CSS通过expression实现Table居中显示
Jun 28 Javascript
javaScript函数中执行C#代码中的函数方法总结
Aug 07 Javascript
封装属于自己的JS组件
Jan 27 Javascript
BootStrap Typeahead自动补全插件实例代码
Aug 10 Javascript
JavaScript奇技淫巧44招【实用】
Dec 11 Javascript
bootstrap fileinput 上传插件的基础使用
Feb 17 Javascript
使用Browserify来实现CommonJS的浏览器加载方法
May 14 Javascript
angular.js + require.js构建模块化单页面应用的方法步骤
Jul 19 Javascript
JavaScript获取某一天所在的星期
Sep 05 Javascript
关于layui toolbar和template的结合使用方法
Sep 19 Javascript
layui 解决form表单点击无反应的问题
Oct 25 Javascript
vue 动态添加class,三个以上的条件做判断方式
Nov 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
PHP微信开发之根据用户回复关键词\位置返回附近信息
2016/06/24 PHP
详解Yii实现分页的两种方法
2017/01/14 PHP
PHP分页显示的方法分析【附PHP通用分页类】
2018/05/10 PHP
javascript AOP 实现ajax回调函数使用比较方便
2010/11/20 Javascript
js给页面加style无效果的解决方法
2014/01/20 Javascript
轻松学习jQuery插件EasyUI EasyUI创建菜单与按钮
2015/11/30 Javascript
浅谈Angularjs link和compile的使用区别
2016/10/21 Javascript
AngularJS中指令的四种基本形式实例分析
2016/11/22 Javascript
jQuery 如何实现一个滑动按钮开关
2016/12/01 Javascript
vue组件发布到npm简单步骤
2017/11/30 Javascript
webpack4打包vue前端多页面项目
2018/09/17 Javascript
详解实现一个通用的“划词高亮”在线笔记功能
2019/04/23 Javascript
微信小程序上传图片到php服务器的方法
2019/05/23 Javascript
vue中实现点击按钮滚动到页面对应位置的方法(使用c3平滑属性实现)
2019/12/29 Javascript
JavaScript实现世界各地时间显示
2020/09/07 Javascript
[06:13]DOTA2进化论(修改版)
2013/10/08 DOTA
Django框架中数据的连锁查询和限制返回数据的方法
2015/07/17 Python
Python将图片批量从png格式转换至WebP格式
2020/08/22 Python
Flask模拟实现CSRF攻击的方法
2018/07/24 Python
python3.4控制用户输入与输出的方法
2018/10/17 Python
python画图——实现在图上标注上具体数值的方法
2019/07/08 Python
Python实现基于socket的udp传输与接收功能详解
2019/11/15 Python
python使用信号量动态更新配置文件的操作
2020/04/01 Python
浅谈Python中的生成器和迭代器
2020/06/19 Python
使用python tkinter开发一个爬取B站直播弹幕工具的实现代码
2021/02/07 Python
美国室内盆栽植物购买网站:Plants.com
2020/04/24 全球购物
英语专业毕业生自荐信
2013/10/28 职场文书
岗位职责定义及内容
2013/11/08 职场文书
实习老师离校感言
2014/02/03 职场文书
项目合作协议书
2014/09/23 职场文书
2014年最新离婚协议书范本
2014/10/11 职场文书
《你在为谁工作》心得体会(共8篇)
2016/01/20 职场文书
python 利用 PIL 将数组值转成图片的实现
2021/04/12 Python
MySQL连接查询你真的学会了吗?
2021/06/02 MySQL
Spring中的@Transactional的工作原理
2022/06/05 Java/Android
Redis实战之Lettuce的使用技巧详解
2022/12/24 Redis