V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
James369
V2EX  ›  程序员

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

  •  
  •   James369 · 2023-06-10 11:05:46 +08:00 · 1641 次点击
    这是一个创建于 557 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1. 用错误码返回,简单粗暴。
    2. 用 try..cache 异常处理,现代语言作法。
    3. 融合使用上述两者。

    各位喜欢哪一种?

    第 1 条附言  ·  2023-06-11 07:21:08 +08:00
    把错误码玩得最 6 的还属 linux 系统了,不仅不需要一一逐级返回,而且还是线程安全的,
    6 条回复    2023-06-10 22:10:32 +08:00
    agagega
        1
    agagega  
       2023-06-10 11:21:13 +08:00
    现代编程语言的做法应该是 Result<T, E>或者 Option<T>,这里叫做 ADT ,可以完全取代错误码

    1. 程序完全无法继续运行的错误,应该直接挂掉,或者利用异常机制做一点善后工作
    2. 程序主逻辑之外的错误(比如文件不存在),用异常或者 ADT
    3. 程序可预见很容易发生的错误情况(比如格式不对),用 ADT
    4. 程序的逻辑错误,用 assert 或者其他类似语言特性做检查
    yazinnnn
        2
    yazinnnn  
       2023-06-10 11:22:25 +08:00
    用 monad
    INCerry
        3
    INCerry  
       2023-06-10 12:02:47 +08:00   ❤️ 1
    我一般都是融合使用上述两者,按照场景使用。该用异常就用异常,该错误码就错误码。
    NXzCH8fP20468ML5
        4
    NXzCH8fP20468ML5  
       2023-06-10 12:09:41 +08:00   ❤️ 1
    上面人谈 ADT 就异常处理的最佳实践,不过很可惜,只能用在一些函数式编程的语言和 Rust 里。
    Java 和 Go 就是两个极端,要么异常,要么错误码,你没得选。
    xuanbg
        5
    xuanbg  
       2023-06-10 19:18:08 +08:00
    我都是在代码里面抛出一个自定义异常,然后全局捕获异常后返回标准的错误码和错误消息。
    ivslyyy
        6
    ivslyyy  
       2023-06-10 22:10:32 +08:00
    只处理你能处理的错误。
    如果你不知道这个错误能不能处理,那就让程序挂掉算了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3204 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 12:33 · PVG 20:33 · LAX 04:33 · JFK 07:33
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.