异常
异常的概念
<1>java异常是java处理程序中错误的一种机制
<2>所谓错误是程序在运行中发生的一些异常事件(除0溢出、数组下标越界,读取的文件不存在等)
<3>设计良好的程序在异常发生时提供处理这些错误的方法,使程序不会因异常阻断或产生不可预见的结果。
<4>如果出现异常世界,java会生成一个异常类对象。该对象封装了异常的信息并被提交给系统,这个过程叫做抛出
异常。
<5>当java运行时系统接受到异常对象时,会寻找能处理这一异常的代码,并把当前异常交给它处理,这一过程叫做
捕获异常。
异常的分类
Error:称为错误,由java虚拟机生成并抛出,包括动态链接失败、虚拟机错误等,程序对其不错处理。
Exception:所有异常类的父类,其子类对应各种各样可能出现的异常事件,一般需要用户显示的声明或捕获。
Runtime Exception:一类特殊的异常,其产生比较繁琐,处理麻烦,因此由系统交给缺省的异常处理程序,用户可
不必对其进行处理。
异常的捕获和处理
try语句
<1>指定了一段代码,该代码就是捕获并处理异常的范围
<2>在执行过程中,该代码可能抛出一种或几种类型的异常对象,它后面的catch语句要分别对这些异常进行处理。
<3>如果没有出现异常,所有的catch语句都不执行。
catch语句
<1>每个try块都可以伴随一个或多个catch语句,用于处理可能产生的不同异常对象。
<2>在catch中声明异常对象(catch (SomeException e))封装了异常事件发生的信息,在catch语句中可以使用
这个对象的一些方法获取这些信息,如
getMessage()
printStackTrace()
finally语句
<1>为异常处理提供了统一的出口,使得在控制流程转到程序其他部分前,对程序的状态进行统一的处理。
<2>无论是否抛出异常,finally语句都会执行
<3>通常在finally语句中进行资源的清楚工作,如:
关闭打开的文件
删除临时文件
throw和throws语句
注意:
使用自定义的异常
<1>通过继承java.lang.Exception类 声明自己的异常类
<2>在方法适当位置生成自定义异常的实例,并用throw语句抛出
<3>在方法声明部分用throws语句声明该方法可能抛出异常
注意:
重写方法可以不抛出异常,若抛出异常必须跟原方法抛出异常一致。