java - 你的 ShouldNeverHappenException 是什么?

标签 java exception

<分区>

Java 的已检查异常有时会迫使您捕获您认为永远不会抛出的已检查异常。最佳实践要求您将其包装在未经检查的异常中并重新抛出它,以防万一。在那种情况下,你用什么异常类包装?

在“//永远不会发生”的情况下,您会用什么异常来包装?

最佳答案

我还没有,但我会按以下方式进行:

  • 让它扩展 Error 而不是 Exception/RuntimeException,因为这样它就不太可能被没有为它准备的错误处理程序捕获;
  • 将其包装在一些静态实用程序调用中:

例子:

public static void doAssert(boolean result, String reason) {

    if ( !result ) 
        throw new OMGWereDoomedError("Assertion failed: " + reason + " .");
}

我更喜欢这些包装器,因为我可以根据需要更改实现。

此外,我不提倡使用断言,因为我并不总是控制运行时标志,但我确实希望在系统受到威胁时突然停止执行。

考虑一下:

  • 向用户显示抱歉,我们无法处理您的付款页面;
  • 向用户确认结果,即使系统处于不确定状态。

你会选择哪个?

关于java - 你的 ShouldNeverHappenException 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1125128/

相关文章:

c++ - 抛出的对象复制构造——为什么?

java - Jenkins SSH 步骤无效私钥

android - 如何使用 RxJava 2 处理错误异常?

java - 在java中删除未使用变量的内存

java - 有没有办法在 IntelliJ 中使用 "deprecate"库方法?

c++ - 即使通过引用捕获也会发生切片

java - 错误 : java. lang.NoSuchMethodException main([Ljava.lang.String;)

java - "org.xmlpull.v1.XmlPullParserException: expected: START_TAG"错误

java - 我怎么知道 JVM 错误在较新版本中得到了解决?

java - 使用线程的 Hibernate session 和事务