Thorwable 类:是 Java 语言中所有错误或异常的超类
异常:编译时异常,编译(编写代码)java程序的问题
RuntimeException:运行时异常,java程序运行过程中出现的问题
异常相当于程序出现小问题(感冒、发烧),处理异常,程序可以继续执行(吃点药,继续工作)
错误:相当于程序出现了无法治愈的问题,必须修改源代码后程序才能继续执行
1)。
throws 关键字:处理异常的第一种方式,留给别人处理
影响:
当方法内部抛出异常时,我们必须处理异常对象
可以使用 throws 关键字处理异常,将异常对象声明抛给方法的调用者处理(自己不要处理,交给别人处理)最后交给JVM处理->中断处理
注意:
1.Throws 关键字必须写在方法声明中
2.throws 关键字后声明的异常必须是 Exception 或 Exception 的子类
3. 如果方法内部抛出了多个异常对象,那么在 throws 之后也必须声明多个异常
如果抛出的多个异常对象有子父类关系,则直接声明父类异常。
4.调用了声明抛出异常的方法,声明的异常必须处理
要么继续使用throws语句抛出,交给方法调用者,最后交给JVM
要么尝试......自己处理异常
2)。
try...catch:处理异常的第二种方式,自己处理异常
格式:
尝试{
可以产生异常的代码
}catch(定义一个异常变量接收try抛出的异常对象){
异常处理逻辑,异常对象产生后如何处理
一般在工作中,异常信息会记录在日志中
}
…
catch(异常类名变量名){
}
注意:
1.try 可能会抛出多个异常对象,那么可以使用多个catch 来处理这些异常对象
2.如果try发生异常,会执行catch中的异常处理逻辑,执行catch中的处理逻辑,继续执行try...catch之后的代码
如果try没有产生异常,那么catch中异常的处理逻辑就不会被执行。执行完try中的代码后,继续执行try...catch后的代码
3)。
最后阻止:
格式:
尝试{
可以产生异常的代码
}catch(定义一个异常变量接收try抛出的异常对象){
异常处理逻辑,异常对象产生后如何处理
一般在工作中,异常信息会记录在日志中
}
…
catch(异常类名变量名){
}最后{
无论是否发生异常都会执行
}
注意:
1.终于不能单独使用了声明异常的关键字是,必须配合try
2.finally一般用于资源释放(资源回收),不管程序是否异常,最后都必须释放资源(IO)
3.如果finally有return语句,总是在finally中返回结果,避免在finally中使用return
4)。
抛出关键字
作用:可以使用throw关键字在指定方法中抛出指定异常
格式:
throw new XXXException("异常原因");
注意:
1.throw 关键字必须写在方法内部
2.throw 关键字后的新对象必须是 Exception 或 Exception 的子类
3.throw 关键字抛出指定的异常对象,我们必须处理这个异常对象
throw关键字后面创建的是RuntimeException或者RuntimeException的子类对象,我们可以不理会,默认留给JVM处理(打印异常对象声明异常的关键字是,中断程序)
throw关键字后面创建的是编译异常(写代码时报错),我们必须处理这个异常,要么throw,要么try...catch