Java异常:
异常的概念:
Java异常是由Java提供的用于处理程序中错误的一种机制
所谓错误是指在程序运行期间出现在错误(而非编译期间)
设计良好的程序应该在异常发生时提供处理这些错误的方法
使得程序不会因为异常的发生而阻断或发生不可预见的结果
Java程序的执行期间如果出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息并将提交给Java运行时系统,这个过程成为抛出异常
当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前对象交给其处理,这一过程称为捕获异常。
异常的分类:
异常和错误都是从throwable继承,throwable下有error和exception,在exception下又有必须捕捉的和不必一定要捕捉的(runtime exception)
Error成为错误,有Java虚拟机生成并抛出,程序对其不做处理
Exception为所有异常的父类,其子类对应了各种各样的可能出现的异常事件,一般需要用户显示的声明或捕获
Runtime Exception 一类特殊的异常,如被零除,数组下标越界等,其产生比较繁琐,处理比较麻烦如果显示的声明或捕获对程序的可读性或运行效率影响很大,因此有系统自动检测并将他们交给缺省的异常处理程序(用户可不对其处理)
异常的捕获和处理:
try语句:
try{...}指定了一段代码,这段代码就是一次捕捉并处理例外的范围。
在执行过程中,该段代码可能会产生并抛出一种或几种类型的异常对象,它后面的catch语句要分别对其进行处理。
如果没有例外所有的catch语句都会被略过不被执行
catch语句:
在catch语句中是对异常进行处理代码,每个try语句可以伴随一个或多个catch语句,用于处理可能产生的不同类型的对象
在catch声明的异常对象(catch (some Exception e))中封装了异常事件发出信息,在catch语句中可以使用这个对象的一些方法获取信息
finally语句:
finally语句为异常处理提供一个统一的出口, 使得控制流流程在跳转到程序的其他部分以前,对程序的状态进行统一的管理
无论try所指定的语句块中是否抛出异常,finally语句都会被执行
通常在finally语句中可以进行资源的清除工作
使用自定义的异常:
通过继承 Java.lang.Exception类来声明自己的异常类
在方法适当的位置生成自定义异常的实例并用throw语句来抛出
在方法声明的部分用throws语句声明该方法可能抛出的异常