错误类型

JavaScript有一个标准的Error对象表示错误,还有从Error派生的TypeErrorReferenceError等错误对象。我们在处理错误时,可以通过catch(e)捕获的变量e访问错误对象:

 1 try {
 2     ...
 3 } catch (e) {
 4     if (e instanceof TypeError) {
 5         alert('Type error!');
 6     } else if (e instanceof Error) {
 7         alert(e.message);
 8     } else {
 9         alert('Error: ' + e);
10     }
11 }

使用变量e是一个习惯用法,也可以以其他变量名命名,如catch(ex)

抛出错误

程序也可以主动抛出一个错误,让执行流程直接跳转到catch块。抛出错误使用throw语句。

例如,下面的代码让用户输入一个数字,程序接收到的实际上是一个字符串,然后用parseInt()转换为整数。当用户输入不合法的时候,我们就抛出错误:

 1 var r, n, s;
 2 try {
 3     s = prompt('请输入一个数字');
 4     n = parseInt(s);
 5     if (isNaN(n)) {
 6         throw new Error('输入错误');
 7     }
 8     // 计算平方:
 9     r = n * n;
10     console.log(n + ' * ' + n + ' = ' + r);
11 } catch (e) {
12     console.log('出错了:' + e);
13 }

实际上,JavaScript允许抛出任意对象,包括数字、字符串。但是,最好还是抛出一个Error对象。

最后,当我们用catch捕获错误时,一定要编写错误处理语句:

var n = 0, s;
try {
    n = s.length;
} catch (e) {
    console.log(e);
}
console.log(n);

哪怕仅仅把错误打印出来,也不要什么也不干:

var n = 0, s;
try {
    n = s.length;
} catch (e) {
}
console.log(n);

因为catch到错误却什么都不执行,就不知道程序执行过程中到底有没有发生错误。

原文地址:https://www.cnblogs.com/yangguoe/p/8249364.html