什么是异常及其关键词以及日志

异常

1、 了解异常的概念:
我们编写的程序是来源或超脱于现实生活的。
生活中不符合我们预期情况的场景即为出现异常。

2、 理解java异常处理机制
hasNextXXX:
什么是异常及其关键词以及日志_第1张图片

弊端:

代码臃肿
程序员要花很大精力“堵漏洞”
程序员很难堵住所有“漏洞”

异常处理机制
原因:程序中出现了不正常情况,会导致程序中断!
关键词
Try尝试 、catch捕捉、finally最终的、throw抛出、throws声明异常
2.1会捕捉异常(Try-Catch)
什么是异常及其关键词以及日志_第2张图片

1、try-catch

正常情况:
与没加效果一致
出现了异常(声明可以捕获):
当try块中某一行代码出现异常则后续代码不执行,直接跳转catch中进行异常处理,处理完后继续向下执行。
出现了异常(异常类型不匹配):
当try块中的某一行代码出现了异常,那么try块中后续代码将不再执行,catch块中声明的异常类型不匹配,则异常将不会被处理,会采用默认处理方式(红字警报)。(就好像缉毒警察解决不了防暴警察的活)
**异常为什么可以做到这个功能是因为:**档异常出现后,jvm中会帮你插件对相应异常类型的对象(new InputMismatchException(异常提示信息)),如果没有(能处理的)try-catch,采用将异常信息进行封装,然后在控制台打印。
异常的堆栈跟踪(我们也可以通过异常对象的方法printStackTrace()来输出异常的堆債跟踪信息):
什么是异常及其关键词以及日志_第3张图片
如果有能够处理的try-catch块,那么jvm会将这个异常对象传给catch(异常类型 形参名)块,然后你就可以通过形参去查看异常星官信息或做对应异常处理了。

3、 try-catch-catch…

多重catch的情况(对比多重if)
特点:当出现异常时,会自上而下的进行判断,判断是否符合catch块中的异常,如果能符合catch块中的异常,如果能符合,直接执行此catch块后续的catch不会触发。
联想多重if记住最容易匹配的
什么是异常及其关键词以及日志_第4张图片

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块的特点,处理完最终执行内容之后,再将异常上抛,也就是先执行finally再执行throw。
**Throws:**后面接的是此方法可能出现的异常的理性,一颗同事制定多个逗号隔开。
**Throw:**用来抛出异常对象。
当初在学习子类重写父类方法中:
子类重写父类方法,这个方法不能抛出比分类更多的异常,也不能抛出更大的异常。
什么是异常及其关键词以及日志_第5张图片

3、了解java异常体系结构(类的家族树)

最顶级是:Throwable
然后是两大分支:Error(错误) Exception(异常)
Error:程序无法通过代码来修复,必须人工干预解决,OutOfMemoryError内存溢出
Exception:程序执行过程中,可能会出现一些问题,可以提前做好处理问题。
Exception(异常)下又俩分支:
RuntimException:运行时异常
Checked异常:受检异常/检查异常
在这里插入图片描述
什么是异常及其关键词以及日志_第6张图片

自定义异常

采用的是继承的方法
什么是异常及其关键词以及日志_第7张图片

4、关于异常的有记录-日志Log4j(了解)

日志:在程序运行期间,记录了程序的状态,用户操作行为、异常情况的一种东西*.log
日志是为了以后我们分析程序裕兴情况和解决问题的根据!重要!
日志记录工具:log4j(log for java)/logback,
1、 下载jar包
2、 将jar包引入工程内
2.1先建立一个lib文件夹将jar包放进去
2.2右键jar包进行build path
2.3像使用jre内的类库一样去使用它即可
Info():记录普通信息的
Error():记录错误信息的
Debug():记录特别的普通信息

你可能感兴趣的:(第十二章)