Java常见错误及异常分析

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 方法。

但是没有找到具有指定名称的类的定义。



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值