2014-09-05 34 views
0

main()方法被声明为这样时,JVM是否处理了Exception当我们写入时,JVM是否处理异常

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

请问编译? – cHao 2014-09-05 04:26:26

+0

@cHao是的,它会。 – Kon 2014-09-05 04:26:53

+0

是的,它会编译,编译器没有警告或错误信息。 – Killer 2014-09-05 04:27:56

回答

2

是的,异常由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. 
+0

谢谢你的信息,我不知道。 – Killer 2014-09-05 04:44:58

3

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

相关问题