首页 理论教育 系统自动抛出的异常

系统自动抛出的异常

时间:2022-02-28 理论教育 版权反馈
【摘要】:Java程序运行过程中时,如果产生的错误是属于系统定义异常类所对应的一个错误,那么,系统将自动抛出该类的异常对象。系统就会自动抛出ArithmeticException类异常对象。到目前为止,所碰到的应用程序都没有包含GUI,也不是多线程程序,一般只有一个主线程。这样,当一个异常被抛出后,Java虚拟机会沿着方法调用方向的反向顺序传播该异常对象,到调用栈的底部,仍然没有找到处理的catch代码块时,Java虚拟机就终止整个程序的运行。

8.3.1 系统自动抛出的异常

Java程序运行过程中时,如果产生的错误是属于系统定义异常类所对应的一个错误,那么,系统将自动抛出该类的异常对象。例如,在例8-1中,变量y除以0的算术运算,产生的错误对应着算术异常类ArithmeticException,属于系统定义异常类。系统就会自动抛出ArithmeticException类异常对象。

我们知道,Java虚拟机的方法调用栈中记录着方法的调用过程。每个线程都有一个独立的方法调用栈。应用程序的主线程是调用main()方法的线程。

到目前为止,所碰到的应用程序都没有包含GUI(图形用户界面),也不是多线程程序,一般只有一个主线程。这样,当一个异常被抛出后,Java虚拟机会沿着方法调用方向的反向顺序传播该异常对象,到调用栈的底部,仍然没有找到处理的catch代码块时,Java虚拟机就终止整个程序(当前线程)的运行。

而某些应用程序(包含GUI的应用程序或多线程程序)和所有的Applet小程序通常具有多个线程。对于这类多线程程序,当一个异常被抛出后,Java虚拟机会沿着方法调用方向的反向顺序传播该异常对象,到调用栈的底部,仍然没有找到处理的catch代码块时,只要该异常不在主线程中,只是终止该线程的运行,其他线程继续正常运行。不过,此时程序可能处于一种不稳定的状态。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈