相信很多码农对 throw 语句并不熟悉, 因为码农的第一目标是消灭报红, 而 throw 的主要作用就是报红
面向用户的项目中, 程序报错大概是个很糟糕的用户体验
但事物都有双面性, 在面向开发者的框架工具中, 报错信息无疑是必不可少的重要内容
throw - JavaScript | MDN
throw语句用来抛出一个用户自定义的异常。当前函数的执行将被停止(throw之后的语句将不会执行),并且控制将被传递到调用堆栈中的第一个catch块。如果调用者函数中没有catch块,程序将会终止。
throw 只能在 try…catch 的 try 中使用, 一旦触发会阻断后面的代码, 错误会被 catch 捕获
throw 的用法与 return 的用法非常相似, throw “报错信息”
报错信息并没有明确要求, 也就是说可以是 new Error(), 字符串, 数组, 对象等等
throw {
a: 1 }
throw "报错信息"
throw [1, 2, 3]
throw true
throw 没有被捕获的话, 就会直接报到控制台, 并阻断以后的代码
一个完整的报错提示至少有三个步骤
- Error: 创建一个错误对象
- throw: 抛出(触发)一个错误
- try…catch: 捕获(处理)错误
常规用法演示
function fun() {
// new Error() 创建一个错误对象
// 用 throw 抛出一个错误
throw new ReferenceError("这是一个报错信息")
}
try {
// 在 try 中执行一个可以报错的函数
fun()
} catch(error) {
// 函数如期抛出错误, 并被 catch 捕获
// 打印捕获的报错信息
console.log(error)
}
报错提示三连
end