在 Java 程序中,我当前在程序中的某个点收到“未处理的异常”,但我似乎无法确定生成此异常的位置。
调试代码也很困难,因为程序包含处理发送和接收的无线数据字节的流。我似乎无法用调试器来模拟它。
我应该采取什么策略来定位异常?
最佳答案
实现Thread.UncaughtExceptionHandler
接口(interface)并使用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();
}
}
}
关于java - 如何在 Java 中诊断 "Unhandled Exceptions"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1739772/