知识卡片

异常应表达罕见但可恢复的情形而非用于常规错误

普通读书笔记卡 · 1811.e

内容

JPC团队定下边界:Exception是异常,Error是错误——Exception该表达出现频率低但程序还能妥善处理的情形,不是代表毁灭性问题。把异常当常规分支用会让虚拟机没法针对通常路径优化;反过来为频繁出现的轻量异常预建静态单例复用,能省下重建调用栈的开销。这套标准把发生频率和是否继续运行分开考虑,比笼统套try-catch更精细。

参考来源

- 位置:《架构之美》第9章《JPC:一个纯Java的x86 PC模拟程序》9.6节《保护模式的危险》(源文件:程序之美系列套装(6册)团队之美、项目管理之美、架构之美、数据之美、测试之美、安全之美/_epub-src/OEBPS/Text/part0202.xhtml) - 结论依据:原文明确"Exception是异常,Error是错误……Exception应该代表极少或例外的情形,但不一定是毁灭性的;Error应该代表毁灭性的或相当严重的不期望的情形",并说明为频繁出现的轻量异常"抛出静态已初始化的异常实例……节省了在每次抛出异常时初始化一个新对象的开销"。 - 原始内容:Exception是异常,Error是错误。详细地说:Exception应该代表极少或例外的情形,但不一定是毁灭性的;Error应该代表毁灭性的或相当严重的不期望的情形……为页错误和系统保护侵犯抛出静态已初始化的异常实例(高效单例异常)。