编程过程中最常见的往往是 Error, 而不是 Success, 毕竟 JavaScript 中并没有 Success 这个对象
而 Error 对象将是下面要讨论的主题
Error - JavaScript | MDN
通过Error的构造器可以创建一个错误对象
Error 的用法很简单, Error(“报错信息”); new Error(“报错信息”);用不用 new 都可以
所谓的"创建一个错误对象", 我觉得 Error() 更像是提供一个错误格式
> Error("报错信息")
Error: 报错信息
at <anonymous>:1:1
> EvalError("报错信息")
EvalError: 报错信息
at <anonymous>:1:1
它与系统报出的错误格式是一样的
> 报错信息
Uncaught ReferenceError: 报错信息 is not defined
at html.html:49
至于怎么触发报错(throw), 怎么捕获报错(try…catch), 怎么输出报错(console.error()), 等等就不是本篇要讨论的问题了
除了 Error 本 Error, 它还有 6个其它类型的子嗣(InternalError 是私生子, 不在此列)
- EvalError
- RangeError
- ReferenceError
- SyntaxError
- TypeError
- URIError
EvalError() instanceof Error // true
RangeError() instanceof Error // true
ReferenceError() instanceof Error // true
SyntaxError() instanceof Error // true
TypeError() instanceof Error // true
URIError() instanceof Error // true
EvalError() instanceof EvalError // true
RangeError() instanceof EvalError // false
这6个类型的用法与 Error 一样, 可以通过 instanceof 判断属于什么类型, 而这6个类型都属于 Error
一个完整的报错提示至少有三个步骤
- Error: 创建一个错误对象
- throw: 抛出(触发)一个错误
- try…catch: 捕获(处理)错误
常规用法演示
function fun() {
// new Error() 创建一个错误对象
// 用 throw 抛出一个错误
throw new ReferenceError("这是一个报错信息")
}
try {
// 在 try 中执行一个可以报错的函数
fun()
} catch(error) {
// 函数如期抛出错误, 并被 catch 捕获
// 打印捕获的报错信息
console.log(error)
}
报错提示三连
end