异常
-
所有的异常类有一个共同的父类:Throwable
-
Throwable是所有异常类的基类,他有两个子类:Exception,Error
-
throws在方法名后面用于声明一个方法可能抛出的异常
-
throw在方法体内用于抛出异常
-
Error表示系统错误胡哦这资源用尽
-
Exception表示应用程序错误
-
RuntimeException时运行时错误
-
Error,RuntimeException是未受检异常,不要求必须处理
-
Exception是受检异常,要求必须处理,否则会出现编译异常
-
异常类并不比父类多多少方法,大概就多了几个构造方法,写这么多异常类是为了区分异常
-
自定义异常根据继承的异常类型也分为受检异常和为受检异常
扫描二维码关注公众号,回复: 4271120 查看本文章 -
try-catch-finally注意事项
1) catch后面的异常类,应该将最具体的放在前面。因为程序会从第一个开始匹配,如果将Exception放在第一个,就不会执行后面的具体异常类。
2) catch块可以继续抛出异常
3)java7之后,catch可以用 | 来分隔多个一场,取代多个catch块
4)finally一般用来释放资源,数据库连接,文件流等
5)finally的执行顺序如果try中没有异常发生,finally会在try执行完毕后执行。 如果try中有异常并且被捕获,finally会在try-catch执行完毕后执行 如果在try-catch异常被捕获但是没有被抛出,finally会在异常抛给上层之前执行 如果try-catch中有return语句,则return语句会在finally执行完毕后执行,finally中不会改变return的返回值。如果finally中也有return语句,会覆盖try-catch中的return语句,并且也会覆盖一场,当作异常没有发生。
-
try-with-resource语法
java7之后,可以将资源的声明和初始化放在try后面,省去finally释放资源的步骤try(InputStream is = FileInputStream(“hello”)){
}java9之后,可以将资源声明和初始化写在try语句块之外,不过必须被写成final,或者不会被重新复制
-
问题
使用try-catch-resource语法之后,还能和finally一起用吗