您的位置 首页 java

5分钟彻底搞懂java的"异常"机制

【写在最前】
Java语言自1995年问世以来,在编程语言市场一直占据最主流的地位,至今无人撼动。
我们在平时的 java 编程学习中,经常会接触到“ 异常 ”这个概念;
但是很多初学者并不能(或误认为已经)很好的从宏观上把握和理解他。甚至是在查阅了很多资料之后仍然是云山雾罩。

如果你感觉不能很好的回答上面这些问题,那么通过本文知识,让我们花5分钟时间彻底搞懂它,相信聪明的你,看完一定会有收获!

# Exception异常和Error错误的区别

Exception异常:

一般都是由程序本身造成和抛出,也都能被程序本身处理;

Error错误:

一般是由 JVM 造成和抛出,应用程序本身并没有办法处理。(比如:OutOfMemoryError内存溢出错误)

5分钟彻底搞懂java的"异常"机制

java中的可抛出对象层次分支图解

# Exception异常的类型

共分为两大类:

1)可检查异常:

特点是 Java编译器 会检查它,即当程序出现这类异常时,

即可以用try-catch语句捕获它,也可以用 throws 声明继续往上层抛出它.
IOException、SQLException、InterruptedException、自定义异常等,都属于可检查异常。
2)不可检查异常(运行时异常):
RuntimeException及其子类属于不可检查异常。

程序中可以选择捕获处理,也可以不处理。

这些异常一般是由程序逻辑错误引起的,也应该从编码时尽可能避免这类异常的发生。

举例:

1)若试图使用 空值 对象引用,则会抛出 NullPointerException 空指针异常;

1)若试图访问数组越界元素,则会抛出 ArrayIndexOutOfBoundException 异常;

try…catch 和 throw 的适用场景

判断标准其实非常简单清晰:

1)当你认为某段代码可能会出异常,并且需要你来负责时,用try…catch

2)当你认为异常需别人负责处理时,就用throw抛给它

3)当你自信绝对不会出异常时,就什么都不用。

# 关于 catch 和 finally

一段代码中,

1) catch可以罗列写出多个 ,比如先 catch IOException,再catch SQLExcpetion

2)虽然可以写多个 catch ,但是 只有1个catch会有匹配和捕获异常类型的机会 ,即 “ 多个catch并不会依次进入和处理 “。

由此,我们可以得出结论: 编码 时,应该尽可能的将“ 捕获具体异常类的catch子 句放在前面” ,否则,catch子句将可能并不会被执行。

3) finally 块的语句始终都会被执行

无论是catch抛出了异常,还是在try块或catch块中定义了return语句,finally语句块也都会正常执行。

【全文完】
—————————————-
十年技术沉淀,只做原创文章;
及时关注作者,成就大牛之路!

文章来源:智云一二三科技

文章标题:5分钟彻底搞懂java的"异常"机制

文章地址:https://www.zhihuclub.com/180710.shtml

关于作者: 智云科技

热门文章

网站地图