现代编程语言的做法应该是 Result或者 Option,这里叫做 ADT ,可以完全取代错误码 1. 程序完全无法继续运行的错误,应该直接挂掉,或者利用异常机制做一点善后工作 2. 程序主逻辑之外的错误(比如文件不存在),用异常或者 ADT 3. 程序可预见很容易发生的错误情况(比如格式不对),用 ADT 4. 程序的逻辑错误,用 assert 或者其他类似语言特性做检查