错误处理对象
JavaScript中有很多内置的错误处理构造函数,比如Error()
、SyntaxError()
,TypeError()
等等,它们通常和throw
语句一起被使用。这些构造函数创建的错误对象包含这些属性:
name
name属性是指产生这个对象的构造函数的名字,通常是“Error”,有时会有特定的名字比如“RangeError”
message
创建这个对象时传入构造函数的字符串
错误对象还有一些其他的属性,比如产生错误的行号和文件名,但这些属性是浏览器自行实现的,不同浏览器的实现也不一致,因此出于兼容性考虑,并不推荐使用这些属性。
throw
可以抛出任何对象,并不限于“错误对象”,因此你可以根据需要抛出自定义的对象。这些对象包含属性“name”和“message”或其他你希望传递给异常处理逻辑的信息,异常处理逻辑由catch
语句指定。你可以灵活运用抛出的错误对象,将程序从错误状态恢复至正常状态。
try {
// 一些不好的事情发生了,抛出错误
throw {
name: "MyErrorType", // 自定义错误类型
message: "oops",
extra: "This was rather embarrassing",
remedy: genericErrorHandler // 应该由谁处理
};
} catch (e) {
// 通知用户
alert(e.message); // "oops"
// 优雅地处理错误
e.remedy(); // 调用genericErrorHandler()
}
使用new
调用和省略new
调用错误构造函数是一模一样的,他们都返回相同的错误对象。