Java中的异常:
1. Throwable是所有异常的根,java.lang.Throwable
Throwable包含了错误(Error)和异常(Exception),Exception又包含了运行时异常。
Error:java.lang.Error
Exception:java.lang.Exception
2. Exception
一般分为Checked异常和Runtime异常,所有RuntimeException类及其子类的实例被称为Runtime异常,不属于该范畴的异常则被称为CheckedException
(1)Checked异常
只有java语言提供了checked异常,Java认为Checked异常都是可以被处理的异常,这些异常从程序的角度来说是必须要处理的异常,否则编译不通过。符合java的设计思想:没有完善处理错误的代码就没有机会被执行。对Checked异常的处理方法两种:
1)当前方法指导如何处理该异常,则用try...catch快来处理该异常。
2)当前方法不知道如何处理,则在定义该方法时生命抛出异常。
比较常见的Checked异常:
java.lang.ClassNotFoundException
java.lang.NoSuchMethodException
(2)RuntimeException
Runtime如除数是0和数组下标越界等,其产生频繁,处理麻烦,若显示申明或者捕获将会对程序的可读性和运行效率影响很大。所有由系统自动检测并它们交给缺省的异常处理程序。当然如果你有处理要求也可以显示捕获它们。
比较常见的RuntimeException类的子类有:
java.lang.ArithmeticException
java.lang.ArrayStoreException
java.lang.IndexOutOfBoundsException
java.lang.NullPointerException
3. Error
当程序发生不可控的错误时,通常做法是通知用户并终止程序的执行。与异常不同的是Error及其子类的对象不应该被抛出。Error是Throwable子类,代表编译时间和系统错误,用于指示合理的应用,程序不应该试图捕获的严重问题。Error由Java虚拟机生成并抛出,包括动态链接失败,虚拟机错误等。程序对其不做处理。