错误处理对象

JavaScript中有很多内置的错误处理构造函数,比如Error()SyntaxError()TypeError()等等,它们通常和throw语句一起被使用。这些构造函数创建的错误对象包含这些属性:

  • name

    name属性是指产生这个对象的构造函数的名字,通常是“Error”,有时会有特定的名字比如“RangeError”

  • message

    创建这个对象时传入构造函数的字符串

错误对象还有一些其他的属性,比如产生错误的行号和文件名,但这些属性是浏览器自行实现的,不同浏览器的实现也不一致,因此出于兼容性考虑,并不推荐使用这些属性。

throw可以抛出任何对象,并不限于“错误对象”,因此你可以根据需要抛出自定义的对象。这些对象包含属性“name”和“message”或其他你希望传递给异常处理逻辑的信息,异常处理逻辑由catch语句指定。你可以灵活运用抛出的错误对象,将程序从错误状态恢复至正常状态。

  1. try {
  2. // 一些不好的事情发生了,抛出错误
  3. throw {
  4. name: "MyErrorType", // 自定义错误类型
  5. message: "oops",
  6. extra: "This was rather embarrassing",
  7. remedy: genericErrorHandler // 应该由谁处理
  8. };
  9. } catch (e) {
  10. // 通知用户
  11. alert(e.message); // "oops"
  12. // 优雅地处理错误
  13. e.remedy(); // 调用genericErrorHandler()
  14. }

使用new调用和省略new调用错误构造函数是一模一样的,他们都返回相同的错误对象。