异常知识点总结——博客园:师妹开讲啦
异常是指程序在执行期间发生的事件,是导致程序中断运行的正常指令流
创建Exception类型的对象返回给JVM这一过程称为抛出异常。如果JVM找不到适合的异常处理程序,JVM将终止程序的运行。异常处理机制是将控制权从发生异常的方法移交给处理该异常的异常处理程序
Java中的所有异常类都是继承自Throwable类
异常类的层次结构
Error类描述的是Java运行系统中的内部错误及资源耗尽情况下的错误,应用程序不能抛出这个错误
博客园:师妹开讲啦--常见的运行时异常:
ArithmeticException算术异常、ArrayIndexOutOfBoundsExceptin数组越界异常、ClassCastException对象转换异常、NullPointerException空指向异常、ArrayStoreException数组存储异常、IllegalArgumentException调用方法是传入非法参数异常、NumberFormatException数字格式异常
检查异常:
ClassNotFountException找不到相关类异常、Exception处理异常的基本异常类
处理异常有两种方法:1、try-catch-finally(原则上,try不可单独存在,后面至少有一个catch或finally语句块),finally语句块时一定要执行的代码块
在以下特殊情况下,finally语句块才不会执行:1、在finally语句块之前执行了System.exit()退出运行;2、在finally语句块执行之前,程序所在的线程死亡
在Java中,不能达到的代码也是一个错误,所以在处理异常时,将最细化的异常类放在前面,之后再使用父异常。
try语句可以被嵌套,在一个try语句块内可以定义另一个try语句块。
在重写方法时如果遇到异常,应注意:1.重写方法异常时,可以抛出与被重写方法相同的异常或者被重写方法异常的子类异常 2.如果父类的方法没有声明抛出异常,那么子类重写方法不可以声明抛出检查异常,但是可以抛出不检查异常 3.如果父类的方法声明抛出异常,包括自定义异常,那么子类覆盖方法可以不声明抛出异常。但如果子类重写方法要抛出异常,只能抛出与被重写方法相同的异常或被重写方法异常的子类,不能是其他的检查异常
声明异常的关键字:throws 抛出异常的关键字:throw
抛出异常的方法声明的异常类型,不能比调用处能处理的异常类型的范围大,否则在编译时将会报错
若需要在程序中自行抛出异常,可以使用throw关键字,throw语句可以单独使用,用于方法体内部,throw抛出的不是异常类,而是异常类的实例
自定义异常类:[public] class 自定义异常类名 extemds Exception类或Exception类的子类{}