一.异常的种类
1.异常分为两种,一种为Checked Exception(受查的异常),一种为UnChecked Exception(不受查的异常)
i.Checked Exception,该异常在把.java文件编译成.class文件时就会出错,这种异常继承于Throwable Exception
有IOException SQLException等
如:试图打开一个本不存在的文件,试图在文件末尾继续读取数据,用字符串查找一个不存在的class
ii.UnCheaked Exception,该异常在运行.class文件时出现的错误,继承于RuntimeException,有ArrayIndexOutOfBoundsException ArithmeticException,NullPointException
如数据类型异常(50/0),如array[array.length],如String s = null; Syso(s.length);
二.如何处理异常
1.处理异常的关键字 try,catch,finally
一般的这三个关键字是放在一起使用的
try{ //可能会出现异常的代码 }catch(Exception e){ //抓住了异常e后的操作代码 }finally{ //不管怎样都会执行的代码,一般用来进行安全操作 }
其中可catch多次,也就是一个try块后可跟多个catch块,catch块的异常参数里所有异常必须从最具体到最通用的顺序排序,即捕获ArithmeticException必须在捕获Exception之前发生。
2.处理异常的关键字 throw,throws
throw是用来抛出异常的,而throws是用来声明异常的
语法用法:
throw new IOException("输入异常");//当执行到这个语句时,jvm就会抛出这个你自定义的IO异常,可以抛出受查异常和非受查异常 void function() throws IOException{};//这个语句用来声明这个方法可能会抛出异常,而这个异常一般来讲是CheckedException,因为非受查异常没必要抛出,程序员自己的问题,至于error更没必要了 //值得注意的是throws这个关键字声明过后必须要做一个异常的处理代码块,而且若是受查异常被处理时会随着栈堆传递出来,就像非受查异常一样
3.小知识点
throw和throws的最大区别是throw用来抛出一个异常实例,而throws就是一个标签,用来声明这个方法或者类可能会抛出一个或多个异常,throws后面跟的是一个类名
try是可以嵌套的,其目的是因为在一个大的可能会出异常的方法块内会出现一些小的代码块可能会抛出其他异常
三.异常处理方法的重写
1.父类方法没声明异常,子类方法只能声明非受查异常或者不声明
2.父类方法声明了异常,子类方法可以声明相同的异常或者不声明或者声明父类方法声明异常的子类异常