持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第8天,点击查看活动详情
前言
兄弟们,这个“周一”过的怎么样呀?前两天没有做笔记,因为定的小目标第一关已经完成了哈哈哈,就给自己放松了一下下,但是昨天有自主学习哟~今天在公司还是没什么活,摸鱼太无聊了,就学了学try-catch这个小知识点,有一点儿小想法,现在梳理一下!
异常
所有的异常类都是从java.lang.Exception类继承的子类。
Exception类是Throwable类的子类。异常类有两个主要的子类:IOException类和RuntimeException类。
除了Exception类外,Throwable还有一个子类Error,Error用来指示运行时环境发生的错误。
例如,JVM内存溢出。一般地,程序不会从错误中恢复。
Java程序通常不捕获错误。错误一般发生在严重故障时,它们在Java程序处理的范畴之外。
捕获异常
try:可能发生异常的代码,应放入try块中
Catch:捕获异常,并进行处理
Finally:无论是否发生异常,里面的代码都会被执行,一般在里面进行资源的清除工作
Throw:只能出现在方法体类,用于显示抛出一个异常
Throws:只能出现在方法签名中,用于标识该方法可能抛出的各种异常类型
try-catch
用try-catch可以在程序发生错误时保证程序可以继续执行下去;
try{
//代码区
}catch(ExceptionName e1){
//异常处理
}
Catch语句包含要捕获异常类型的声明。当try里的代码发生一个异常时,try后面的catch块就会被检查。
如果发生的异常包含在catch块中,异常会被传递到该catch块,这和传递一个参数到方法是一样。
注意下面事项:
- catch不能独立于try存在。
- 在try/catch后面添加finally块并非强制性要求的。
- try代码后不能既没catch块也没finally块。
- try, catch, finally块之间不能添加任何代码。
虽然使用try-catch可以在一定程度上保证程序的健壮性,但是它也会在一定程度上隐藏代码缺陷,不利于bug排查;如果没有try-catch,程序会崩溃,然后在日志里很容易看出问题;但是用了try-catch以后,虽然程序没崩溃,可是可能会运行不正常;因为异常产生后其后面的代码可能就没有被执行;这个时候排查起来会增加难度!
所以,不能怕程序出错,就什么什么都用try-catch包起来,要有选择谨慎得使用!
总结
try-catch 是大家很常见的代码,但是总有人用得不太好,我就是其中之一;总觉得它可以被使用的更完美,上次在catch里配合log4j,直接把可能产生异常的数据打印到日志里,感觉就会舒服很多,这也算是一个小小的经验吧!继续加油吧!
突然感觉各种知识就像黑洞,引力巨大的同时,也让人觉得压力巨大!
怕什么真理无穷,进一寸有一寸的欢喜。 ——胡适