Exception的用法

“Exception”在中文里通常译作“异常”,指程序运行中出现的、打断正常流程的特殊情况;它和编程语言里的错误处理机制密切相关。日常搜索这个词的人,多半是想弄清它到底怎么用、什么时候该用、以及和普通错误有什么区别。
基本含义与常见用途
异常机制的核心用途,是让程序在遇到意外时有一条“正规出口”,而不是直接崩溃或返回一个含糊的错值。典型用法是:把可能出问题的代码放进 try 块,用 catch(或 except)捕获特定类型的异常并处理,最后用 finally 做清理工作。这样写的好处是,正常逻辑和错误处理分开,代码更清晰。很多语言还允许自定义异常类型,用来表达业务层面的特殊状况,比如输入格式不对、资源不存在等。
常见问题
新手最容易踩的坑有几个:一是捕获范围过大,比如直接捕获所有异常,结果把本该暴露的 bug 也吞掉了;二是捕获后不做任何处理,只留一个空块,出问题时无从排查;三是把异常当成普通流程控制来用,频繁抛出和捕获,既慢又难读。另外,跨语言时要注意异常类型体系不同,有的语言区分受检异常和非受检异常,写法差别不小。
怎么判断该不该用异常
一个实用的判断标准是:这件事算“预期内的正常分支”,还是“意外状况”。如果是用户输入不合法这类可预见的情况,很多语言更推荐返回错误码或结果对象;如果是文件突然读不到、网络中断、数组越界这类打断当前操作的情况,用异常更合适。选捕获范围时,尽量捕获最具体的类型,处理不了就往上抛,别为了省事一网打尽。