java异常的父类是Throwable,Throwable有俩个子类一个是Error,一个是Exception
Error表示错误:是程序无法解决的问题,不是由程序员导致的,是很严重的问题
Exception表示异常:是由程序员导致的问题,是小的问题,通过调程序可以解决
Exception有分为俩种,一个是检查性异常,另一个是非检查性异常
检查性异常:代码写出来就会直接报错,需要提前进行预处理
范围:RuntimeExceotion及其子类以外的其他类
非检查性异常:代码写出来不会报错,但是会在进行时报错
范围:RuntimeException及其子类
处理异常的方式有三种1.声明异常2捕获异常3.抛出异常
我们来讲一下捕获异常(try-catch)
try{
这个里面写可能出现异常的代码
}
try不能单独出现
catch(){
里面写处理异常的代码
}
catch后面可以跟多个catch,但是父异常不能写在子异常前面
可以在catch后面加上finally{
不管try代码块里的代码是否发生异常,finally代码块里的代码都会执行
finally代码块中写的代码都是受保护(一定会执行)的代码
}
throws声明异常
异常发生时使用声明会将异常抛给主调方法,如果主调方法还不处理异常会继续向上抛出
直到到了main方法,如果还不处理就会发生宕机,程序停止运行。如果其中使用了catch
处理异常,那么后续调用就不会再发生异常了。代码如下
public class Exceotion{
public void method1() throws ClassNotFoundException { Class.forName("com.haina365.Lesson15.ExceotionTest03"); } public void method2()throws ClassNotFoundException{ method1(); } public void method3(){ try{ method2(); }catch (ClassNotFoundException e){ e.printStackTrace(); } } public void method4(){ method3(); } public static void main(String[] args) { }
}