爱收集资源网

联想多重try记住最容易匹配的4种情况(下)

网络整理 2022-04-13 11:01

当try块中某行代码发生异常时,后续代码不执行,直接跳转到catch进行异常处理,处理完继续向下执行。

发生异常(异常类型不匹配):

当 try 块中的一行代码发生异常时,try 块中的后续代码将不再执行。如果catch块中声明的异常类型不匹配,则不处理该异常,采用默认处理方式(红色警报)。. (好像禁毒警察解决不了防暴警察的工作)

**异常之所以能这样做是因为:**file异常发生后,jvm会帮你插入对应异常类型的对象(new InputMismatchException(异常提示信息)),如果没有(可以处理)try-catch,它封装了异常信息并打印在控制台上。

异常的堆栈跟踪(我们也可以通过异常对象的 printStackTrace() 方法输出异常的堆债跟踪信息):

如果有可以处理的try-catch块,jvm会将异常对象传递给catch(异常类型参数名)块,然后可以通过形参查看异常star信息或者做相应的异常处理.

3、 尝试-捕捉-捕捉...

多个 catch 的情况(与多个 if 相比)

特点:发生异常时,会从上到下判断,判断是否匹配catch块中的异常。如果匹配到了catch块中的异常,如果匹配了,就不会触发这个catch块的后续catch。

关联倍数 if 记住最容易匹配

4、 try-catch-finally

特点:无论try块中的代码是否有异常,都会执行finally块中的代码片段。

4.1 出现退出虚拟机语句:System.exit(0);

**4.2return 关键字:**结束当前方法,返回给方法的调用者。当 try-catch 中出现 return 和 finally 块时声明异常的关键字是,他会先执行 finally 块中的代码,然后再执行 return。

注意:try、catch、finally可以随意组合,但不能单独出现。

2.2 会抛出异常(throws-throw)

之所以出现,是因为当某个位置发生异常时,如果他不想处理,可以抛出异常,抛给调用者。

后期常见形式:为了利用finally块的特性,在处理完final执行内容后,抛出异常,即先执行finally再执行throw .

**抛出:** 跟着这个方法可能出现的异常合理性,一位同事制定了多个逗号来分隔它们。

**Throw:** 用于抛出异常对象。

当我学习如何在子类中重写父类方法时:

子类重写超类方法,该方法不能抛出比类更多的异常,也不能抛出更大的异常。

3、了解java异常架构(类的家族树)

顶部是:可投掷的

然后有两大分支:Error(错误)Exception(异常)

错误:程序无法通过代码修复,必须人工干预解决声明异常的关键字是,OutOfMemoryError内存溢出

例外:程序执行过程中可能会出现一些问题,可以提前处理。

Exception下有两个分支:

RuntimException:运行时异常

已检查异常:已检查异常/已检查异常

自定义异常

继承方法

4、关于异常的记录——记录Log4j(了解)

日志:程序运行过程中,记录程序状态、用户操作行为、异常情况 *.log

日志是我们以后分析程序宇星情况和解决问题的依据!重要的!

日志工具:log4j(java 日志)/logback,

1、 下载jar包

2、 将jar包引入项目中

2.1 首先创建一个lib文件夹,将jar包放入其中

2.2 右键jar包构建路径

2.3 就像jre中的类库一样使用

Info():记录一般信息

Error():记录错误信息

Debug():记录特殊的一般信息

try