您的位置:首页> 前端教程> JS教程
文章导航

JavaScript try catch finally 语句

2018-7-22 00:37| 作者: admin| 查看: 2141| 评论: 1|来自: 蚂蚁部落

一.基础知识:

try...catch...finally语句提供一种能够处理指定代码错误,并且能够保证代码正常运行的措施。

如果不使用此语句,如果指定的js代码出现代码错误,反馈到用户界面上的将是非常不友好的崩溃信息,并且这些信息只对程序员有用,对于普通的浏览者来说,这个网页已经出现问题,已经没有继续浏览的必要了。

语法结构:

[JavaScript] 纯文本查看 复制代码
try{
  //此语句从第一行开始执行,如果遇到错误(抛出异常),该代码块就会结束执行
}
catch(e){
  //如果try语句块遇到错误(抛出异常),此语句块就会得到执行
  //e是一个对象,含有与异常相关的信息
}
finally{
  //无论try中代码是否有异常抛出,finally代码块中始终会被执行。
}

进一步补充说明:

(1).try{}必需,里面是有可能出现错误异常的代码。

(2).catch(e){}可选,如果有此语句,那么e则是必须的。用来处理相关联try语句中发生的错误。

(3).finally{}可选,其中的代码会在错误过程发生之后无条件执行。

特别说明:

catch(e){}和finally{}至少存在一个或者两个同时存在。

二.执行流程:

如果存在catch语句,那么try语句抛出异常之后,就会立马被catch捕获并执行其中的代码。如果有finally语句,且没有catch语句,try语句抛出异常,然后执行finally语句,最后再将异常以异常的方式继续往上抛,最终的处理参阅window.onerror用法一章节。

代码实例:

[JavaScript] 纯文本查看 复制代码运行代码
(function(){
  try{
    done(); 
  }
  catch(e){
    console.log(e.name);
console.log(e.message);
  }
  finally{
    console.log("finally");
  }
})()

以上代码是一个try...catch...finally语句的应用,同时我们看到参数e为我们提供很多信息,它是一个对象,类似于事件对象,下面就对它做一下介绍。

三.Error对象:

目前可能得到的系统异常主要包含以下6种:

[JavaScript] 纯文本查看 复制代码
EvalError: raised when an error occurs executing code in eval() 
RangeError: raised when a numeric variable or parameter is outside of its valid range 
ReferenceError: raised when de-referencing an invalid reference 
SyntaxError: raised when a syntax error occurs while parsing code in eval() 
TypeError: raised when a variable or parameter is not a valid type 
URIError: raised when encodeURI() or decodeURI() are passed invalid parameters

上面的六种异常对象都继承自Error对象。

代码实例如下:

[JavaScript] 纯文本查看 复制代码
new Error();
new Error("异常信息");

Error对象属性:

(1).description: 错误描述 (仅IE可用). 

(2).fileName: 出错的文件名 (仅Mozilla可用). 

(3).lineNumber: 出错的行数 (仅Mozilla可用). 

(4).message: 错误信息 (在IE下同description) 

(5).name: 错误类型. 

(6).number: 错误代码 (仅IE可用). 

(7).stack: 像Java中的Stack Trace一样的错误堆栈信息 (仅Mozilla可用). 

四.手工抛出异常信息:

除了获取系统的异常信息,我们也可以手痛抛出自定义异常信息,这里就要用到throw语句。

语法结构:

[JavaScript] 纯文本查看 复制代码
throw expression;

expression可以是任何类型对象实例。通常情况下抛出一个Error对象或是Error对象的子类实例。

代码实例如下:

[JavaScript] 纯文本查看 复制代码运行代码
(function(){
  try{
    throw new Error("蚂蚁部落自定义"); 
  }
  catch(e){
    console.log(e.name);
    console.log(e.message);
  }
  finally{
    console.log("finally");
  }
})()

抛出的是一个Error对象实例。

[JavaScript] 纯文本查看 复制代码运行代码
(function(){
  try{
    throw new String("蚂蚁部落");; 
  }
  catch(e){
    console.log(e.length);
  }
  finally{
    console.log("finally");
  }
})()

抛出的是一个字符串对象实例。

1

鲜花

握手

雷人

路过

鸡蛋

刚表态过的朋友 (1 人)

发表评论

最新评论

引用 前端小咸鱼 2019-8-17 18:02
有点像java

查看全部评论(1)

返回顶部