各位喜欢哪一种?
1
agagega 2023-06-10 11:21:13 +08:00
现代编程语言的做法应该是 Result<T, E>或者 Option<T>,这里叫做 ADT ,可以完全取代错误码
1. 程序完全无法继续运行的错误,应该直接挂掉,或者利用异常机制做一点善后工作 2. 程序主逻辑之外的错误(比如文件不存在),用异常或者 ADT 3. 程序可预见很容易发生的错误情况(比如格式不对),用 ADT 4. 程序的逻辑错误,用 assert 或者其他类似语言特性做检查 |
2
yazinnnn 2023-06-10 11:22:25 +08:00
用 monad
|
3
INCerry 2023-06-10 12:02:47 +08:00 1
我一般都是融合使用上述两者,按照场景使用。该用异常就用异常,该错误码就错误码。
|
4
NXzCH8fP20468ML5 2023-06-10 12:09:41 +08:00 1
上面人谈 ADT 就异常处理的最佳实践,不过很可惜,只能用在一些函数式编程的语言和 Rust 里。
Java 和 Go 就是两个极端,要么异常,要么错误码,你没得选。 |
5
xuanbg 2023-06-10 19:18:08 +08:00
我都是在代码里面抛出一个自定义异常,然后全局捕获异常后返回标准的错误码和错误消息。
|
6
ivslyyy 2023-06-10 22:10:32 +08:00
只处理你能处理的错误。
如果你不知道这个错误能不能处理,那就让程序挂掉算了。 |