JavaScript 错误



定义:当 JavaScript 引擎执行 JavaScript 代码时,会发生各种错误,我们把这种错误叫 JavaScript 错误。

相关语句:处理错误的相关语句如下:

语句

描述

try 语句

测试代码块的错误。

catch 语句

处理错误。

throw 语句

创建自定义错误。

finally 语句

在 try 和 catch 语句之后,无论是否有触发异常,该语句都会执行。


一、抛出错误



1、哪些错误
  • 可能是语法错误,通常是程序员造成的编码错误或错别字。
  • 可能是拼写错误或语言中缺少的功能(可能由于浏览器差异)。
  • 可能是由于来自服务器或用户的错误输出而导致的错误。
  • 当然,也可能是由于许多其他不可预知的因素。
2、如何抛出

当 JavaScript 引擎执行 JavaScript 代码时,如果发生错误,JavaScript 引擎通常会停止,并生成一个错误消息。

描述这种情况的技术术语是:JavaScript 将抛出(throw)一个错误

3、问题

JavaScript 错误会导致 JavaScript 引擎停止,也就是无法继续执行后续代码。这可能会带来一些麻烦,比如某些浏览器差异:同样的方法在不同的浏览器上可能就是一个 JavaScript 错误,这会使得代码无法运行,这时候,我们需要使用 try/catch/finally 语句。



二、try/catch/finally 语句



try/catch/finally 语句用于处理代码中可能出现的错误信息。

1、语法
try {
    // tryCode - 尝试执行代码块
}
catch(err) {
    // catchCode - 捕获错误的代码块
} 
finally {
    // finallyCode - 无论 try / catch 结果如何都会执行的代码块
}
2、参数和关键字

参数

描述

try语句

允许我们定义在执行时进行错误测试的代码块。

catch语句

当 try 代码块发生错误时,所执行的代码块。

err

错误信息。

finally语句

在 try 和 catch 之后无论有无异常都会执行。

注意: catch 和 finally 语句都是可选的,但你在使用 try 语句时必须至少使用一个

3、应用

JavaScript 错误会导致后续代码无法执行。但是 try语句 捕捉到 JavaScript 错误后将执行 catch语句 ,不会停止执行代码。所以,try/catch/finally 语句常用于:

  • es6语法兼容
  • 浏览器差异
var xhr = null
try {
    xhr = new XMLHttpRequest()
}
catch (err) {
    xhr = new ActiveXObject('Microsoft.XMLHTTP') // 兼容 IE5、IE6
}



三、throw 语句



throw 语句:创建或抛出异常(exception)。

使用:如果把 throw 与 try 和 catch 一起使用,那么您能够控制程序流,并生成自定义的错误消息。

v = document.getElementById('input').value
try {
    if (v === '') throw '值为空'
    if (isNaN(v)) throw '不是数字'
    v = Number(v)
    if (v < 0) throw '不能小于0'
}
catch (err) {
    alert('错误: ' + err)
}

注意:如果 getElementById 函数出错,上面的例子也会抛出一个错误。