您的位置:首页 > 编程语言 > Java开发

Java常见错误及异常分析

2011-09-07 14:38 218 查看
Java语言中所有的错误及异常都继承自Throwable类。只有当对象是此类或其子类的实例时,才能通过JVM或者Java throw语句抛出。有点意思的是其他以able结尾的都是接口,而Throwable确是类(sigh,还好今天仔细研究了下,不然都不知道)......

Throwable有两个子类:Error和Exception

(1).Error:

    表示由JVM侦测到的无法预期的错误,这是属于JVM层次的严重错误,导致JVM无法运行,因此这是无法采取任何恢复的操作,顶多只能显示错误信息。

(2).Exception:

    异常,属于可恢复可捕捉的例外

Java主要提供的两种异常:Runtime Exception和Checked Exception

(1).Checked Exception:

    也就是我们经常遇到的IO异常,以及SQL的异常都是这种异常。对于这种异常,Java编译器要求我们必须强制进行catch。

(2).Runtime Exception:

    即运行时异常,是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。
RuntimeException
的任何子类都无需在
throws
子句中进行声明,及我们可以不对运行时异常做处理。当出现这种异常时由JVM托管,将异常一直往上层抛,直到遇到处理代码。如果没有处理快,到最上层,如果是多线程则由Thread.run()抛出,该线程结束。如果是单线程则被main()抛出,程序结束。即当我们不对运行时异常做处理时,当出现运行时异常时,要么是线程终止,要么是程序终止。

    如果我们不想终止,则必须捕获所有的运行时异常,决不让这个线程退出。在出现异常数据时,正确的做法应该是将异常舍弃,同时记录日志,而不应该由于异常数据影响对下面正确数据的处理。

常见Exception及Error

(1)Exception

java.lang包下有:

1.java.lang.ArithmeticException:

当出现异常的运算条件时,抛出此异常。例如,一个整数“除以零”时,抛出此类的一个实例。

2.java.lang.ArrayIndexOutOfBoundsException

用非法索引访问数组时抛出的异常。如果索引为负或大于等于数组大小,则该索引为非法索引。

3.java.lang.ArrayStoreException

试图将错误类型的对象存储到一个对象数组时抛出的异常。例如,以下代码可生成一个
ArrayStoreException


Object x[] = new String[3];
x[0] = new Integer(0);
4.java.lang.ClassCastException

当试图将对象强制转换为不是实例的子类时,抛出该异常。例如,以下代码将生成一个
ClassCastException


Object x = new Integer(0);
System.out.println((String)x);
5.java.lang.ClassNotFoundException

当应用程序试图使用以下方法通过字符串名加载类时,抛出该异常:

Class
类中的
forName
方法。
ClassLoader
类中的
findSystemClass
方法。
ClassLoader
类中的
loadClass
方法。
但是没有找到具有指定名称的类的定义。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息