发布网友 发布时间:2024-10-24 10:35
共1个回答
热心网友 时间:2024-11-20 16:00
JavaScript 中的 throw 语句用于抛出异常,try/catch/finally 结构则负责异常处理。抛出的异常操作数可以是任何 JavaScript 表达式的值,这个值会被 catch 子句捕获作为参数。解释器抛出的异常通常都是 Error 或其子类对象,message 属性记录了错误描述。推荐用户程序也抛出 Error 或其子类,而非仅字符串描述,因为这样可以保留调用栈信息,便于调试。自定义错误类时,可以利用继承来实现,便于错误识别。
未捕获的异常会沿调用栈向上传递,直至被用户以错误形式报告。了解异常传递路径有助于理解以下两个场景:
场景一:内部函数在外部被调用,由外层捕获异常。
场景二:setTimeout 回调由引擎调用,若未被捕获,则异常无法被词法外层的 try-catch 结构捕获。这意味着许多异步 API 中的回调形式异常无法被词法外层捕获。