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速查手册
Aug 20 Javascript
$.ajax json数据传递方法
Nov 19 Javascript
33个优秀的jQuery 教程分享(幻灯片、动画菜单)
Jul 08 Javascript
Bootstrap富文本组件wysiwyg数据保存到mysql的方法
May 09 Javascript
浅析$.getJSON异步请求和同步请求
Jun 06 Javascript
关于backbone url请求中参数带有中文存入数据库是乱码的快速解决办法
Jun 13 Javascript
js 调用百度分享功能
Feb 27 Javascript
自带气泡提示的vue校验插件(vue-verify-pop)
Apr 07 Javascript
WdatePicker.js时间日期插件的使用方法
Jul 26 Javascript
Vuejs 单文件组件实例详解
Feb 09 Javascript
vue.js系列中的vue-fontawesome使用
Feb 10 Javascript
JavaScript模拟实现自由落体效果
Aug 28 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
全国FM电台频率大全 - 26 西藏自治区
2020/03/11 无线电
让php处理图片变得简单 基于gb库的图片处理类附实例代码下载
2011/05/17 PHP
简要剖析PHP的Yii框架的组件化机制的基本知识
2016/03/17 PHP
jscript之Open an Excel Spreadsheet
2007/06/13 Javascript
jquery的Tooltip插件 qtip使用详细说明
2010/09/08 Javascript
使用JS 清空File控件的路径值
2013/07/08 Javascript
轻松创建nodejs服务器(10):处理POST请求
2014/12/18 NodeJs
js实现简单选项卡与自动切换效果的方法
2015/04/10 Javascript
js中javascript:void(0) 真正含义
2020/11/05 Javascript
使用jQuery给input标签设置默认值
2016/06/20 Javascript
javascript图片预览和上传(兼容IE)
2017/03/15 Javascript
Node.js中的require.resolve方法使用简介
2017/04/23 Javascript
浅谈webpack编译vue项目生成的代码探索
2017/12/11 Javascript
vue-i18n结合Element-ui的配置方法
2019/05/20 Javascript
vue-cli 3 全局过滤器的实例代码详解
2019/06/03 Javascript
JavaScript实现串行请求的示例代码
2020/09/14 Javascript
在Python中使用mongoengine操作MongoDB教程
2015/04/24 Python
浅谈Python peewee 使用经验
2017/10/20 Python
django实现同一个ip十分钟内只能注册一次的实例
2017/11/03 Python
Python3调用微信企业号API发送文本消息代码示例
2017/11/10 Python
python中的随机函数小结
2018/01/27 Python
在PyCharm下打包*.py程序成.exe的方法
2018/11/29 Python
pyqt5实现绘制ui,列表窗口,滚动窗口显示图片的方法
2019/06/20 Python
用pyqt5 给按钮设置图标和css样式的方法
2019/06/24 Python
python利用tkinter实现屏保
2019/07/30 Python
Django用户认证系统 Web请求中的认证解析
2019/08/02 Python
Pytorch反向求导更新网络参数的方法
2019/08/17 Python
python 生成正态分布数据,并绘图和解析
2020/12/21 Python
利用CSS3的特性改变文本选中时的颜色
2013/09/11 HTML / CSS
一款纯css3实现的鼠标悬停动画按钮
2014/12/29 HTML / CSS
瑞典灯具和照明网上商店:Lamp24.se
2018/03/17 全球购物
Hello Molly美国:女性时尚在线
2019/08/26 全球购物
经营理念标语
2014/06/21 职场文书
反四风个人对照检查材料
2014/09/26 职场文书
2015年反腐倡廉工作总结
2015/05/14 职场文书
SQL Server中使用判断语句(IF ELSE/CASE WHEN )案例
2021/07/07 SQL Server