一般异常和运行时异常

来源:互联网 发布:dnf打团网络冲突 编辑:程序博客网 时间:2024/05/18 18:02

运行时异常:

运行时异常是由java虚拟机抛出的

运行时异常是由java虚拟机接管,出现运行时异常后,系统会把异常一直往上层抛,一直遇到处理代码。如果没有处理块,到最上层,如果是多线程就由Thread.run()抛出,如果是单线程就被main()抛出。抛出之后,如果是线程,这个线程也就退出了。如果是主程序抛出的异常,那么这整个程序也就退出了。运行时异常是Exception的子类,也有一般异常的特点,是可以被Catch块处理的。只不过往往我们不对他处理罢了。也就是说,你如果不对运行时异常进行处理,那么出现运行时异常之后,要么是线程中止,要么是主程序终止。

    如果不想终止,则必须扑捉所有的运行时异常,决不让这个处理线程退出。队列里面出现异常数据了,正常的处理应该是把异常数据舍弃,然后记录日志。不应该由于异常数据而影响下面对正常数据的处理。


常见的运行时异常:

                          

ArithmeticException - 算术运算中,被0除或模除

ArrayIndexOutOfBoundsException -数组越界访问

ArrayStoreException -数据存储异常,写数组操作时,对象或数据类型不兼容

ClassCastException - 类型转换异常

IllegalArgumentException - 方法的参数无效

IllegalThreadStateException -试图非法改变线程状态,比方说试图启动一已经运行的线程

NullPointerException -试图访问一空对象的变量、方法或空数组的元素

NumberFormatException -数据格式异常,试图把一字符串非法转换成数值(或相反)

SecurityException -如果Applet试图执行一被WWW浏览器安全设置所禁止的操作

IncompatibleClassChangeException -如改变了某一类定义,却没有重新编译其他引用了这个类的对象。如某一成员变量的声明被从静态改变为非静态,但其他引用了这个变量的类却没有重新编译,或者相反。如删除了类声明中的某一域或方法,但没有重新编译那些引用了这个域或方法的类

OutOfMemoryException -内存不足,通常发生于创建对象之时

NoClassDefFoundException -JAVA运行时系统找不到所引用的类

IncompatibleTypeException -试图实例化一个接口,Java运行时系统将抛出这个异常

UnsatisfiedLinkException -如果所需调用的方法是C函数,但Java运行时系统却无法连接这个函数

InternalException -系统内部故障所导致的异常情况,可能是因为Java运行时系统本身的原因。如果发现一可重现的InternalException,可以直接给Sun公司发电邮java@java.Sun.com

一般异常:

一般异常就是我们一般遇到的IO异常和SQL异常,遇到这种异常我们不得不写catch语句处理可能出现的异常,因为java编辑器强制要求我们必须对这些异常进行catch处理。

0 0