拦截异常

Jam*_* P. 6 java swing exception intercept

我想使用自定义异常,以便在发生任何排序异常时出现用户友好的消息.

这样做的直接方式是什么?我是否应该采取额外的预防措施来避免干扰Swing的EDT?

bak*_*kal 6

例外翻译:

最好不要使用对最终用户没有意义的消息来污染您的应用程序,而是创建有意义的异常和消息,这些异常和消息将转换在应用程序实现深处发生的异常/错误.

根据@ Romain的注释,您可以使用Exception(Throwable cause)构造函数来跟踪较低级别的异常.

来自Effective Java 2nd Edition,第61项:

[...]更高层应该捕获较低级别的异常,并且在它们的位置抛出可以用更高级别的抽象来解释的异常.这个成语被称为异常翻译:

   // Exception Translation
    try {
         // Use lower-level abstraction to do our bidding
         ...
    } catch(LowerLevelException e) {
         throw new HigherLevelException(...);
    }
Run Code Online (Sandbox Code Playgroud)

  • +1只需确保将原始异常传递给新构造函数,这样您就可以看到完整的堆栈跟踪以及原始原因. (2认同)