当main()
方法被声明为这样时,JVM是否处理了Exception
?当我们写入时,JVM是否处理异常
public static void main(String[] args) throws Exception {
// code here
}
当main()
方法被声明为这样时,JVM是否处理了Exception
?当我们写入时,JVM是否处理异常
public static void main(String[] args) throws Exception {
// code here
}
是的,异常由JVM由default exception handler处理。
您可以通过使用一个的更改此行为在线程,线程组,或虚拟机级别:
Thread.setUncaughtExceptionhandler()
ThreadGroup.uncaughtException()
Thread.setDefaultUncaughtExceptionHandler()
举一个简单的例子:
public class Program {
public static void main(String[] args) {
Thread.setDefaultUncaughtExceptionHandler(new Thread.UncaughtExceptionHandler() {
@Override
public void uncaughtException(Thread t, Throwable e) {
System.err.println("Uhhh something broke.");
}
});
int a = 5/0;
}
}
请问输出:
Uhhh something broke.
谢谢你的信息,我不知道。 – Killer 2014-09-05 04:44:58
是的,它打印堆栈跟踪,除非你自己调用它。在那种情况下,你处理它。
请问编译? – cHao 2014-09-05 04:26:26
@cHao是的,它会。 – Kon 2014-09-05 04:26:53
是的,它会编译,编译器没有警告或错误信息。 – Killer 2014-09-05 04:27:56