【摘要】:由调用方法处理:如果没有外层的try语句,或者外层try语句也没有catch子句能够捕捉该异常,则由调用方法处理。由Java虚拟机执行默认程序:如果所有的方法都不能捕获该异常对象,那么Java虚拟机打印来自方法调用栈的异常信息,如果该线程不是主线程,那么终止这个线程,其他线程继续正常运行。
8.5.1 没有捕获到的异常
当try子句发生异常时,如果没有一个catch子句能够捕捉到,则按下列步骤进行处理。
(1)由外层try语句处理:如果try语句本身是另外一个try语句的try子句的一部分,那么异常就由该外层try语句的catch子句捕捉处理。
(2)由调用方法处理:如果没有外层的try语句,或者外层try语句也没有catch子句能够捕捉该异常,则由调用方法处理。
(3)由Java虚拟机执行默认程序:如果所有的方法都不能捕获该异常对象,那么Java虚拟机打印来自方法调用栈的异常信息,如果该线程不是主线程,那么终止这个线程,其他线程继续正常运行。如果该线程是主线程,那么整个应用程序被终止。
注意:异常对象总是沿着方法调用栈调用顺序的反方向传递。
【例8-13】 异常没有被捕获并在方法调用栈反方向传递,转由调用方法处理。
下面是程序一种可能的运行结果:
TeachingException:教学计划问题!教学大纲设置等需学院自己解决。
分析与思考:goToClass()方法产生的TeachingException,FacilityException异常是受检查异常,该方法本身又不处理,所以要声明抛出让调用者去处理。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。