什么是你应该发生的异常?

Dha*_*ana 6 java exception

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

在"//应该永远不会发生"的案例中你会包含什么例外?

Rob*_*anu 3

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

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

例子:

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

    if ( !result ) 
        throw new OMGWereDoomedError("Assertion failed: " + reason + " .");
}
Run Code Online (Sandbox Code Playgroud)

我更喜欢这些包装器,因为如果需要的话我可以更改实现。

另外,我不提倡使用断言,因为我并不总是控制运行时标志,但我确实希望如果系统受到损害,执行会突然停止。

考虑一下:

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

你会选择哪个?