我们编写时JVM是否处理异常

时间:2014-09-05 04:24:48

标签: java jvm

Exception方法声明为这样时,JVM是否处理main()

public static void main(String[] args) throws Exception { 
    // code here
}

2 个答案:

答案 0 :(得分:3)

是的,它会打印堆栈跟踪,除非您自己调用它。在这种情况下,你处理它。

答案 1 :(得分:2)

是的,default exception handler由JVM处理异常。

您可以使用以下方法之一在线程,线程组或VM级别更改此行为:

  • 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.