java - 异常处理模式

标签 java exception enums design-patterns

这是我看到的一种常见模式,其中与异常关联的错误代码存储为静态最终整数。当创建要抛出的异常时,它是用这些代码之一和一条错误消息构造的。 这导致将要捕获它的方法必须查看代码,然后决定一个操作过程。

替代方案似乎是为每个异常错误情况声明一个类(尽管相关的异常会派生自一个公共(public)基类)

有中间立场吗?推荐的方法是什么?

最佳答案

回答您的具体问题:您的决定应基于处理异常的方式和原因。您是否想让您的程序尽可能万无一失,并方便地分别对每种可能的错误情况使用react?那么你确实应该为你能识别的每一个可能的错误原因创建一个异常类。否则,最好针对每个案例单独做出决定。

有许多非常常见的错误会危及整个程序的稳定性(例如 ClassNotFoundException 或 NoSuchMethodException)——绝对应该专门处理这些错误。还有其他彼此密切相关的错误,导致类似的问题 - 这些可以很好地分组或分层组织(IOException 代表与输入或输出相关的各种错误,NetworkIOException 仅代表输入和输出错误与网络访问等有关)。

在我看来,比异常的名称和类层次结构更重要的是您如何处理它:您将 try/catch block 放在哪里?应该为哪个日志文件写入哪些日志条目?应该通知谁?哪些错误消息应该只显示给管理员/开发人员?哪些错误应该传达给最终用户?

有许多处理异常的模式,可以回答诸如此类的各种问题。可以找到相当广泛的常见和有用模式集合 here .

关于java - 异常处理模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4589750/

相关文章:

java - 需要更有效的暂停循环的方法

java - 在 project.properties 中设置构建路径

java - "Software caused connection abort: socket write error"的官方原因

javascript - 如何捕获内部异常?

java - 在 Spring Boot Controller 中反序列化枚举忽略大小写

java - Java中随机生成器的问题

java - setParameter 和 hibernate 中设置特定类型参数的区别

android - SecurityException 权限拒绝 MediaProvider READ_EXTERNAL_STORAGE

java - 为什么允许 `enum of enum of enum..`?

javascript - 使用其中的字符串作为函数名称(Javascript)