两者均是java错误处理机制的一部分
error是错误,表示无法通过程序解决的问题,如内存溢出
Exception是异常,有编译异常和运行时异常,可以通过捕获或优化解决
1. NullPointerException (空指针引用异常)
2.ClassCastException (类型强制转换异常)
3.IIIegalArgumentException (传递非法参数异常)
4.IndexOutOfBoundsException (下标越界异常)
5.ArithmeticException ( 算术运算异常)
Exception:
1.可以是可被控制的(checked)或是不可被控制的(unchecked)
2.表示一个由程序员导致的错误
3.应该在应用程序级被处理
Error:
1.总是不可控制的
2.经常用来用于表示系统错误或者底层资源的错误
3.如果可能的话,应该在系统级被捕捉
例:
1)java.lang.NullPointerException 空指针异常;出现原因:调用了未经初始化的对象或者是不存在的对象。
2)java.lang.ClassNotFoundException 指定的类找不到;出现原因:类的名称和路径加载错误;通常都是程序
试图通过字符串来加载某个类时可能引发异常。
3)java.lang.NumberFormatException 字符串转换为数字异常;出现原因:字符型数据中包含非数字型字符。
4)java.lang.IndexOutOfBoundsException 数组角标越界异常,常见于操作数组对象时发生。
5)java.lang.IllegalArgumentException 方法传递参数错误。
6)java.lang.ClassCastException 数据类型转换异常
Error类和Exception类的父类都是throwable类,他们的区别是:
Error类一般是指与虚拟机相关的问题,如系统崩溃,虚拟机错误,内存空间不足,方法调用栈溢等。对于这类错误的导致的应用程序中断,仅靠程序本身无法恢复和和预防,遇到这样的错误,建议让程序终止。
Exception类表示程序可以处理的异常,可以捕获且可能恢复。遇到这类异常,应该尽可能处理异常,使程序恢复运行,而不应该随意终止异常。
Exception类又分为运行时异常(Runtime Exception)和受检查的异常(Checked Exception ),运行时异常;ArithmaticException,IllegalArgumentException,编译能通过,但是一运行就终止了,程序不会处理运行时异常,出现这类异常,程序会终止。而受检查的异常,要么用try。。。catch捕获,要么用throws字句声明抛出,交给它的父类处理,否则编译不会通过。
常见运行时异常:
NullPointException空指针异常
ClassCastException类型转换异常
IndexOutOfBoundsException索引越界异常
等