知识卡片

异常分离主线

普通读书笔记卡 · 1492.c

内容

throw 中断函数执行并抛出含 name(类型)和 message(描述)的异常对象,交给外层 try/catch 处理,使正常路径与错误处理在结构上分离:主流程清晰,catch 集中处理事故。一个 try 只有一个统一的 catch,按异常类型分支需检查 name 属性。发散:异常不该替代普通分支,只有当前层无法合理处理的问题才应抛给调用者。

参考来源

- 位置:《JavaScript语言精粹(修订版)》第4章《函数 Functions》"异常"一节 - 结论依据:原文定义异常是"干扰程序的正常流程的不寻常(但并非完全是出乎意料的)的事故",给出 throw 一个含 name/message 属性对象、由 try/catch 捕获的标准模式,并说明一个 try 语句只有一个 catch,必须靠 name 属性区分异常类型,据此推出异常机制用于分离主流程与错误处理的结论。 - 原始内容:throw语句中断函数的执行。它应该抛出一个exception对象,该对象包含一个用来识别异常类型的name属性和一个描述性的message属性……一个try语句只会有一个捕获所有异常的catch代码块。如果你的处理手段取决于异常的类型,那么异常处理器必须检查异常对象的name属性来确定异常的类型。