对try-catch的简单理解

71 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第8天,点击查看活动详情

前言

兄弟们,这个“周一”过的怎么样呀?前两天没有做笔记,因为定的小目标第一关已经完成了哈哈哈,就给自己放松了一下下,但是昨天有自主学习哟~今天在公司还是没什么活,摸鱼太无聊了,就学了学try-catch这个小知识点,有一点儿小想法,现在梳理一下!

异常

所有的异常类都是从java.lang.Exception类继承的子类。

Exception类是Throwable类的子类。异常类有两个主要的子类:IOException类和RuntimeException类。

除了Exception类外,Throwable还有一个子类Error,Error用来指示运行时环境发生的错误。

例如,JVM内存溢出。一般地,程序不会从错误中恢复。

Java程序通常不捕获错误。错误一般发生在严重故障时,它们在Java程序处理的范畴之外。

image.png

捕获异常

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,直接把可能产生异常的数据打印到日志里,感觉就会舒服很多,这也算是一个小小的经验吧!继续加油吧!
突然感觉各种知识就像黑洞,引力巨大的同时,也让人觉得压力巨大!

image.png

怕什么真理无穷,进一寸有一寸的欢喜。 ——胡适