JavaScript 异常处理


JavaScript中异常(exception)是一种在程序执行过程中可能碰到的运行时错误。


Javascript中有两种处理异常的方法:

  • 使用try、catch、finally语句。catch块只是在捕获到异常时才会执行。不论是否发生错误,finally块一定会执行。
  • 使用onerror事件。

throw语句

使用throw语句抛出一个异常。

throw语句的格式:throw 表达式1;。表达式1可以是任意表达式。可以为数字、字符串、布尔值、函数、自定义对象等。例如:throw "Error001";

try语句

try语句的写法:

try {
  语句1
} catch (e) {
  语句2
} finally {
  语句3
}

Javascript有内置的异常对象,当发生异常时提供错误信息。异常对象提供两种属性:name和message。

下面是try语句的例子:

<!DOCTYPE html><html><body><pre>
<script type="text/javascript">
  try {
    var x = y + 1;
  } catch(e) {
    document.writeln("e.name : " + e.name + ", e.message : " + e.message); // ReferenceError, e.message : Can't find variable: y
  } finally {
    document.writeln("finally");  // finally
  }

  try {
    throw "Error001";
  } catch(e) {
    document.writeln("e : " + e); // Error001
  }
</script>
</pre></body></html>

自定义异常对象

下面是自定义异常对象的例子:

<!DOCTYPE html><html><body><pre>
<script type="text/javascript">
  function CustomException(message){
    this.message = message;
    this.name = "CustomException";
  }

  try {
    throw new CustomException("输入无效!");
  } catch(e) {
    document.writeln("e.name : " + e.name + ", e.message : " + e.message); // CustomException, e.message : 输入无效!
  }
</script>
</pre></body></html>

onerror事件处理器

onerror事件处理器用来处理异常情况。

下面是onerror事件的例子:

<!DOCTYPE html><html><body><pre>
<script type="text/javascript">
  window.onerror = function(msg, url, lineNumber) {
    document.writeln("msg : " + msg + ", lineNumber : " + lineNumber); // ReferenceError: Can't find variable: f, lineNumber : 8
    document.writeln("url : " + url);   
  };

  f();
</script>
</pre></body></html>