如何诊断Java中的"Unhandled Exceptions"?

Kev*_*oyd 0 java unhandled-exception

在Java程序中,我目前在程序中的某个点获得"Unhandled Exception",我似乎无法确定生成它的位置.

由于程序包含处理发送和接收的无线数据字节的流,因此调试代码也很困难.我似乎无法用调试器模拟它.

我应该采取什么策略来定位异常?

jit*_*ter 11

实现Thread.UncaughtExceptionHandler接口并使用setDefaultUncaughtExceptionHandler()它来设置它.

示例程序礼貌.如果你使用多个线程,你也可以在你怀疑是罪魁祸首的线程上设置处理程序.

public class Test {
  public static void main(String args[]) {
      new Test();
  }
  public Test() {
      Thread.setDefaultUncaughtExceptionHandler(new MyUncaughtExceptionHandler());
      // or if a default handler is set you can also use setUncaughtExceptionHandler
      // check the javadocs for the specifics
      throw new RuntimeException ("You can't get me or can you?");
  }
  class MyUncaughtExceptionHandler implements Thread.UncaughtExceptionHandler {
      public void uncaughtException(Thread t, Throwable e) {
          System.err.println ("Uncaught exception by " + t + " caught:");
          e.printStackTrace();
      }
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 大多数情况下,它们将是未经检查的异常,但根据您的具体实现,它们也可能会被检查异常.例如,如果你检查了你没有用try-catch处理的异常,只是在throws子句中声明它们,例如main() (2认同)