JAVA基础提高巩固篇--异常的处理

           写代码最怕异常,但有时候又喜欢异常,初次入行的时候以为异常都是代码的问题,但实质不然,今天在这里做个个人的理解。

           异常现在可以分为1.检查型异常,   2.运行时异常,3.错误

           1.检查型异常:比如我们在读取某个文件的时候,配置数据库链接的时候,这时候IDE工具都会提醒我们错误,要求你要么捕获异常,要么就抛出异常。

            2.运行时异常:该异常是代码编译时无法检测到的,但多数能被用户处理的异常,比如空指针

            3.错误:出现这问题可能原因就是服务器,JVM的问题,比如堆栈内存异常。

Java中定义的异常类主要有两种:error,exception,对应的异常分类如图:

JAVA基础提高巩固篇--异常的处理

从图中我们可以看见很多我们日常用到的捕获异常类, 对应的实现也相对易懂。

相信很多人都有一个疑惑我们为什么要捕获异常,以及能给我们的程序带来什么,捕获异常是为了我们程序的健壮性,不会因为某一个点的问题原因而导致系统无法使用或崩溃,是为了软件维护人员和使用人员更好的沟通与提高系统的功能服务。

写的好代码不是看它功能实现而是看功能注释与异常捕获的处理,代码写的越久越明白异常处理的重要性。

异常捕获我们可以用两种实现方式,最常见的是就是try-catch以及throws两种方式,第一种将可能出现异常的代码块写入try中进行捕获,catch块用于捕获后的处理,如抛出异常或写入运行日志,另外一种就是在方法名称后面加入该关键字throws. 如throws Exception,意思就是标明将抛出所有可能触发的异常,当然你也可以写具体的异常类,多个以逗号分隔开就行。

说到异常捕获我们不得不提一下finally,它的主要作用是用于关闭方法体中如资源访问,数据库连接,文件读取的操作,它无论你try中是否捕获到异常,它最终都会执行finally方法体内的代码,它的执行顺序简单的说下:

JAVA基础提高巩固篇--异常的处理

如果在catch和finally中都加入了return操作,代码都会执行,只不过最终的返回值只以finally中为准,catch中的返回值会被覆盖,但代码执行顺序没有发生改变。

JAVA基础提高巩固篇--异常的处理

当然真正的做法是不应该在finally中写return的操作代码,这完全就是自我挖坑的操作。

JAVA基础提高巩固篇--异常的处理

上图是从一个写的很好的博客中获取的,非常清楚的解释,如果有影响请联系我删除。

异常的简单理解,语言也不好组织,能理解但以文字形式写出来还是不好写啊,初次写博客,还望理解。

推荐一篇讲述异常机制的博文:https://blog.csdn.net/zhangliangzi/article/details/51290026