Java异常处理
1. 抓抛模型
-
过程一: “抛”,程序在正常执行过程中,一旦出现异常,就会在异常代码处生成一个对应异常类的对象,并将此对象抛出。
一旦对象抛出,其后代码就不再执行。
-
过程二:“抓”,可以理解为异常处理方式:1.try-catch-finally 2.throws
2.异常处理的两种方式
- 方式一:try-catch-finally
- 是可以真正解决异常的方式
- finally是可选的
- finally中声明的是一定会执行的代码。即使catch中又出现了异常,try中有return语句,catch中有return语句等情况
- 数据库连接,输入输出流,网络编程Socket等资源,JVM是不能自动回收的,我们需要自己动手进行资源的释放,此时的资源释放,就需要声明在finally中
- try将可能出现异常的代码包装起来,catch对try抛出的异常进行捕获并有处理办法
- catch中异常类型如果满足子父类关系,子类异常必须放上面
- 常用的异常对象处理方式: 1 String getMessage() 2 printStackTrace()
- 在try结构中声明的变量在出了try结构后不能在被调用
- try-catch-finally结构可以嵌套
- 方式二:throws + 异常类型
- throw + 异常类型 写在方法声明处,指明此方法执行时,可能会抛出异常类型,一旦当方法体执行时,出现异常,仍会在异常代码处生成一个异常类对象,此对象满足throws后异常类型时,就会被抛出。异常处后续代码不在执行!
3. 体会
- 使用try-catch-finally处理编译时异常,使得程序在编译时不在报错,但是运行时仍有可能报错,相当于将一个可能出现的异常,延迟到运行时出现
- 开发中由于异常比较常见,所以我们就不针对运行时异常编写try-catch-finally了,针对编译时异常我们一定要处理
- try-catch-finally:真正将异常给处理掉了,