Error和Exception都是继承自Throwable
Error是发生在jvm层面的错误,不可捕捉到,无法采取任何操作,最多只能显示出错误信息
Exception是可恢复的异常,可以捕捉到,并且可以进行操作
主要有两类主要的异常:RuntimeException和checkedException
CheckedException是非运行时异常,例如I/O异常,SQL异常,这种类型的异常编译器强制我们要对此作出处理
RuntimeException运行时异常,可以不处理
出现运行时异常时,系统会把异常一直向上抛,直到遇到处理该异常的代码,如果不对运行时异常进行处理,那么当出现异常时,要么线程终止,要么主程序终止,如果不想终止,必须捕捉所有的异常并进行处理,处理完后会进行下面的代码
RuntimeException的处理方式:
1.当前方法明确知道如何处理异常,使用try...catch,然后再catch中修复异常
2.不知道如何处理异常时,在定义方法时声明抛出异常
throw和throws的区别:
throws出现在方法头,throw出现在方法体中;一个方法是throws的,并不意味着一定会抛出异常,只是有这种可能,执行throw是一定出现了该异常;
好的习惯:
try...catch捕获异常后一定要在catch中进行处理,如果是捕获I/O异常,try...catch后一定要在finally中关闭输入输出流
finally中的代码会在try中return语句执行之前执行,如果try中有return语句,finally中也有return语句,则try中的return语句不会执行。finally不管异常是否发生,都会执行