Error对象和try..catch语句
Error 对象和try..catch语句
1.Error 对象
Javascript解析或者执行时,一旦发生错误,JavaScript引擎就会抛出一个错误对象。JavaScript原生的提供一个Error构造函数,所有抛出的错误都是这个构造函数的实例。
根据语言标准,Error对象示例必须具有message属性,表示错误出现时的提示信息。对于大部分的Javascript引擎,对Error对象还提供name和stock属性,分别表示错误的名称和错误的堆栈信息,他们是非标准的,不是每一个Error实例都要去实现。
f2();
function f1() {
console.log(abc);
}
function f2() {
f1();
}
观察控制台中的错误。
其中:“abc is not defined”是错误提示信息。
最下面的三行错误信息就是堆栈信息。
2.try...catch语句
为了对错误进行处理,我们需要使用try...catch结构。
允许在try...catch块最后定义finally块,表示不管是否出现错误,都必须要在后面运行的语句。
在finally块中一般都是做一些清理的工作。
function f1() { ;;;;; try { console.log("begin"); console.log(abc); // 一旦出错,Javascript引擎就是构造一个Error对象 } catch(err) { console.log(err.message); } finally { console.log("end"); }
Javascript的原生错误类型
Error对象是最一般的错误类型,在其基础上,Javascript还定义了6中错误,也就是说存在6中派生的错误对象。
1. SyntaxError是解析代码时发生的错误
var 1a = "abc"; console.log "abc");
2. ReferenceError 是引用一个不存在的变量发生的错误
console.log(abc); // 引用一个不存在的变量 console.log() = 1; // 将一个值分配给一个无法分配的对象
3. RangeError 是当一个值超出有效范围时发生的错误
var arr = new Array(-1);
4.TypeError 是变量或者参数不是预期类型时发生的错误。比如字符串、数值、布尔等原始类型的值使用new命令,就是抛出该错误。
new 123;
5.URIError是URI相关函数不正确时抛出的错误
6.EvalError 是Eval函数没有正确执行时抛出的错误
Javascript的原生错误类型
Error对象是最一般的错误类型,在其基础上,Javascript还定义了6中错误,也就是说存在6中派生的错误对象。
1. SyntaxError是解析代码时发生的错误
var 1a = "abc"; console.log "abc");
2. ReferenceError 是引用一个不存在的变量发生的错误
console.log(abc); // 引用一个不存在的变量 console.log() = 1; // 将一个值分配给一个无法分配的对象
3. RangeError 是当一个值超出有效范围时发生的错误
var arr = new Array(-1);
4.TypeError 是变量或者参数不是预期类型时发生的错误。比如字符串、数值、布尔等原始类型的值使用new命令,就是抛出该错误。
new 123;
5.URIError是URI相关函数不正确时抛出的错误
6.EvalError 是Eval函数没有正确执行时抛出的错误