关于try{}catch(){}的一些总结

程序要健壮,必须要设计报错机制。而try()catch{}就是一种报错机制。

1、为什么使用try{}catch(){}

优点:程序运行报错就会终止,而try()catch{}为了抛出运行时的异常,使程序能够正常运行。

2、如何使用try()catch{}?

(1)结构
try{
//可能出现异常的代码
}catch(){
//捕捉到异常后的处理方式
}

(2)try-catch的执行顺序
①先执行try{}中的代码,从try{}代码中第一行开始执行,当出现异常,jvm就会创建一个异常对象。
②判断catch中声明的异常类型是否能捕捉到jvm创建的异常对象
i: 能捕捉到:直接跳到catch代码块中执行。 不会结束程序,继续从catch代码块后面的代码执行
ii: 不能捕捉到:直接打印异常信息并结束程序
③try{} 中没有出现任何异常,把try中的所有代码执行完,跳过catch继续程序
(3)注意事项
①.能被catch捕捉到的条件 ==》try中创建的异常对象的类型与catch中声明的类型一致,或者是catch中声明的类型的子类。
②如果只有一个捕捉指定类型的catch 只能捕捉对应类型的异常对象。 如果try中创建了其他类型的异常,捕捉不到。Jvm来处理异常
③try{}代码块中存在多行代码会抛出异常的情况下,遇到第一个异常,后面代码的异常 只会被catch捕捉到异常信息但都将不会被执行
(4)不同形式
写多个catch时,下边的catch声明的异常类型不能是上边的catch声明的子类。
多个catch时,异常父类必须在下边。 (没有继承关系时,就不用考虑此情况)

try{ }catch(){ }catch(){ }…finally{ } (catch可以有多个,也可以没有 ==》 try{ }finally{ })
(5)关于finnaly
特点:写在finally代码块中代码,一定会被执行到
注意:①执行了 return 也会执行finally
②但 执行 System.exit(0) 就不会再执行finally了!!!

3、什么时候使用try()catch{}?

(1)代码预料不到是否会出错的时候,或者出错可能性较大的时候。
(2)构建一个文件输入流的时候,文件上传下载写入等
(3)线上环境内存不稳定的时候,出错可能性比较大
(4)数据库事务的提交,还有摄像头和打印机的使用。使用数据库事务的时候使用try-catch,如果事务执行成功就提交事务,如果事务执行失败就由catch提示错误并回滚事务。
(5)程序调用其他人写的程序接口的时候,不敢保证别人的接口返回的都是约定好的返回值。

你可能感兴趣的:(关于try{}catch(){}的一些总结)