java异常体系详解

来源:互联网 发布:淘宝迷你型三辊研磨机 编辑:程序博客网 时间:2024/06/07 10:39

1.引出异常体系

在c语言中没有异常处理机制。在java中有。异常出现后,程序会中断,所以必须处理异常

2.异常体系

java中Throwable这个类可以被作为异常抛出的类,继承它的分为异常Exception和错误Error.

Error表示系统级别的错误和程序无需处理的。                                                    其子类后缀名几乎都为Error,如想知道是什么错误,可直接拷贝错误名进入API查找

Exception表示程序需要捕捉和处理的异常:子类后缀名几乎都为Exception 如想知道是什么错误,可直接拷贝错误名进入API查找

常见的Exception异常:                                                                1.java.lang.NullPointerException   异常的解释是"程序遇上了空指针"

2.java.lang.ArrayIndexOutOfBoundsException   异常的解释是"数组下标越界"

3.NumberFormatException:字符串转换为数字类型时抛出的异常。

3.处理异常

有2种方法:

1)该方法不处理,而是声明抛出,由调用者处理(throws)

2)在该方法中使用try - catch语句来处理异常



注意: try和catch必须同时使用,一个catch只能捕获一种异常,一个try后可以加多个catch来捕获异常。代码在一瞬间只能出现一种异常。


4.获取或查看异常信息(打印异常信息)

1)String getMessage()   即错误出现的原因(提供给用户看的错误信息)


2)String toString()   即错误出现的类型和原因(不用)


3)void printStackTrace()  即直接打印出错误的来源,类型和原因(在catch块中必写




5.finally语句块

表示最终都会执行的代码(当只有在try或者catch中调用退出JVM的相关方法【System.exit(0)】,否则finally永远会执行),无论是否有异常

一般用在以下的情况中:当我们在try 语句块中打开了比如:磁盘文件,网络连接。数据库连接等。在使用完之后,最终关闭打开资源。


finally的两种语法结构(finally不能单独使用,一个try只对应一个finally,catch可有多个) :

1)try ....finally: 此时没有catch语句块来捕获异常,因为此时根据应用场景,我们会抛出异常,自己不处理。

2)try....catch....finally : 自身需要处理异常,最终还要关闭资源


如果finally语句中有return 语句,永远返回finally中的结果


谢谢阅读!
原创粉丝点击