Gee*_*eek 11 java multithreading
如果我run()在一个Thread上调用该方法并且该run()方法抛出一个未被捕获的异常会产生什么结果呢?
谁抓住了这个例外?是否异常,甚至被逮住?
如果为ThreadGroup安装了异常处理程序,则JVM会将异常传递给它.如果它是AWT线程,则可以为其他未处理的异常安装事件处理程序.否则JVM会处理它.
具有自定义处理程序的线程组示例以及如何使用它:
public class MyThreadGroup extends ThreadGroup {
public MyThreadGroup() {
super("My Thread Group");
}
public void uncaughtException(Thread t, Throwable ex) {
// Handle exception
}
}
Thread t = new Thread(new MyThreadGroup(), "My Thread") { ... };
t.start();
Run Code Online (Sandbox Code Playgroud)
使用AWT异常处理程序的示例:
public class MyExceptionHandler {
public void handle(Throwable ex) {
// Handle exception
}
public void handle(Thread t, Throwable ex) {
// Handle exception
}
}
System.setProperty("sun.awt.exception.handler", MyExceptionHandler.class.getName());
Run Code Online (Sandbox Code Playgroud)