【问题标题】:Is there an unhandled exception handler in Java?Java中有未处理的异常处理程序吗?
【发布时间】:2009-02-26 00:52:50
【问题描述】:

如果我在 .NET 中没记错的话,可以为未处理的异常注册“全局”处理程序。我想知道Java是否有类似的东西。

【问题讨论】:

    标签: java exception exception-handling


    【解决方案1】:

    是的,有 defaultUncaughtExceptionHandler,但只有在 Thread 没有设置 uncaughtExceptionHandler 时才会触发。

    【讨论】:

      【解决方案2】:
      【解决方案3】:

      是的,ThreadGroup 中有一个“几乎”全局的此类处理程序。它不像你提到的那样全局,但你基本上可以实现相同的功能。

      从 Java 5 开始,Thread class 上直接提供了类似的功能。

      【讨论】:

        【解决方案4】:

        通常,像 Struts 和 Spring(以及 Servlet Spec、IIRC)这样的 Java 框架允许您设置全局异常处理程序。不过,这些机制特定于每个框架。

        【讨论】:

          【解决方案5】:

          .NET Java 中未处理的异常:

          Thread.setDefaultUncaughtExceptionHandler(new
          Thread.UncaughtExceptionHandler() {
            public void uncaughtException(Thread t1, Throwable e1) {
             // Exception handling code  
            }
          });  
          

          从here偷来的

          【讨论】:

            【解决方案6】:

            假设它就像 C++ 中的 catch(...) 你会这样做:

            尝试 { // 你的代码在这里 } 抓住(可投掷的前) { // 任何类型的异常,即使虚拟机被花生呛到了 }

            一般来说,这不是一个好主意,除非您正在处理第 3 方代码(您应该尝试始终在自己的代码中抛出 Exception 的子类(而不是 RuntimeException) - 除非它表明应该是 delt 的程序员错误通过单元测试。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2011-01-29
              • 1970-01-01
              • 1970-01-01
              • 2021-06-29
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多