上篇文章主要介绍了异常的基本概念和使用。本文主要从异常的继承结构、异常处理机制、throw、throws关键字角度分析java异常的处理。
一、异常的继承结构
java异常继承结构中,有两个常用的类,一个是Exception,另一个是Error。Excepiton表示的是程序中出现的异常需要使用try…catch处理,用户自定义的异常继承自Exception,还有一个常见的异常类RuntimException类,该类继承自Exception,Exception类和RuntimeException的主要区别是:Exception在程序中必须使用try…catch语句进行处理,RuntimeException可以不使用try catch进行处理,但是如果发生了RuntimeException的异常将由JVM进行处理。Error一般指的是JVM错误,在程序中是无法处理的。异常类的继承结构如下图1所示:
图1 异常类的继承结构
二、异常的处理机制
1.在 java的异常处理过程中,一旦发现异常将会按照如下步骤处理:
(1)实例化一个异常类对象。
(2)将产生的异常对象与catch语句里的个异常类型进行匹配,如果匹配成功,则执行catch语句中的代码。
(3)如果有finally语句块,将执行finally语句块中的代码。
根据异常的继承结构可知,算术异常、数字格式异常、数组越界异常均是Exception的子类,根据引用数据类型转换规则可知,可以使用一个父类对象Exception来接收所有的异常对象。在java中所有捕获范围小的异常必须放在捕获范围大的异常之前,否则在代码编辑时就会出现错误提示。如下图所示:
图2范围大的Exception在前时编辑器报错提示
三、异常关键字throws、 throw
1.throws
java中定义一个方法时可以使用throws抛出异常,具体格式如下:
public 返回值类型 方法名称(方法参数列表)throws 异常类{}。
如下图所示:
图3 throws关键字使用
2.throw
在java程序中如果有异常情况,可以使用关键字throw将程序中出现的异常直接抛出,在主调函数中用try…catch的方式将被调函数中throw的异常捕获进行处理。如下图所示:
图4 throw关键字的使用
感谢阅读,动一动您的手指,分享给身边的朋友吧!谢谢!
长按识别二维码关注本文公众号