处理程序异常,用异常处理好还是直接错误码好?

2023-06-10 11:05:46 +08:00
 James369
  1. 用错误码返回,简单粗暴。
  2. 用 try..cache 异常处理,现代语言作法。
  3. 融合使用上述两者。

各位喜欢哪一种?

1641 次点击
所在节点    程序员
6 条回复
agagega
2023-06-10 11:21:13 +08:00
现代编程语言的做法应该是 Result<T, E>或者 Option<T>,这里叫做 ADT ,可以完全取代错误码

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

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/947494

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX