异常处理的内部行为是什么?

时间:2015-09-07 12:07:19

标签: java exception

如果有异常,则创建一个异常对象。

如果没有处理异常,该异常对象会发生什么,内部机制是什么?

2 个答案:

答案 0 :(得分:3)

您可以查看How uncaught exceptions are handled

  

Java实际上根据线程处理未捕获的异常   他们发生了什么。当特定的未发生异常发生时   线程,Java寻找所谓的未捕获异常处理程序,   实际上是接口UncaughtExceptionHandler的实现。   后一个接口有一个方法handleException(),其中   实施者覆盖采取适当的行动,如打印   堆栈跟踪到控制台。正如我们稍后会看到的,我们实际上可以   安装我们自己的UncaughtExceptionHandler实例来处理   未捕获的特定线程的异常,甚至是整个   系统

     

具体程序如下。当一个未被捕获的异常   发生时,JVM执行以下操作:

     
      
  • 它在发生异常的Thread类上调用一个特殊的私有方法dispatchUncaughtException();
  •   
  • 然后终止发生异常的线程1。
  •   

enter image description here

答案 1 :(得分:0)

如果Exception对象存在并且已经存在,那么Rahul已经很好地回答了。

有趣的是如何处理新的Exception对象,而不是扔掉。这是一种编程技术,可以获得一些运行时信息,比如堆栈,调用地点异常构造函数等等。

            e= new Exception();
            StackTraceElement[] st = e.getStackTrace();
            for(StackTraceElement s:st)
            {
                s.getLineNumber()
            }
// NO throw