收藏 分享(赏)

java入门第6章.ppt

上传人:gnk289057 文档编号:8436605 上传时间:2019-06-27 格式:PPT 页数:22 大小:404.03KB
下载 相关 举报
java入门第6章.ppt_第1页
第1页 / 共22页
java入门第6章.ppt_第2页
第2页 / 共22页
java入门第6章.ppt_第3页
第3页 / 共22页
java入门第6章.ppt_第4页
第4页 / 共22页
java入门第6章.ppt_第5页
第5页 / 共22页
点击查看更多>>
资源描述

1、河南大学软件学院,Java 编程基础,主讲:李丽,第6章 异常处理机制,(1)异常概述 (2)异常的分类 (3)捕获异常 (4)声明异常 (5)定义自己的异常类,Java异常是Java提供的用于处理程序中错误的一种机制。所谓错误是指在程序运行的过程中发生的一些异常事件(如:除0溢出,数组下标越界,所要读取的文件不存在)。设计良好的程序应该在异常发生时提供处理这些错误的方法,使得程序不会因为异常的发生而阻断或产生不可预见的结果。,6.1异常概述,见TestException1.java,在Java中,一个方法的运行过程中如果发生了异常,则这个方法(或者是Java虚拟机)生成一个代表该异常的对象(

2、包含了该异常的详细信息),并把它交给运行时系统。我们把生成异常对象并把它提交给运行时系统的过程称为抛出(throw)一个异常。当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获异常。,6.1异常概述,异常的抛出捕捉过程:,6.1异常概述,IOException,6.2异常的分类,在API文档中凡是在方法后面写了throws必须显示捕捉,Error:称为错误,由Java虚拟机生成并抛出,一般是和虚拟机相关的问题,如动态链接失败、系统崩溃、虚拟机出现错误等。这种错误无法恢复或不可捕捉,将导致应用程序中断。Exception:所有异常类的父类

3、,其子类对应各种可能出现的异常事件,一般需要用户显示的声明或捕获。RuntimeException:一类特殊的异常,如被0除、数组下标越界等,其产生比较频繁,处理麻烦,如果显示的声明或捕获将会对程序可读性和运行效率影响很大。因此由系统自动检测并将它们交给缺省的异常处理程序(用户可不必对其处理)。,6.2异常的分类,见TestException2.java,6.3捕获异常,Java的异常处理是通过3个关键词来实现的:try-catch-finally。用try来监视执行一段程序,如果出现异常,系统就会抛出(throws)异常,可以根据异常的类型来捕捉(catch)相应的异常并处理它,或最后(fi

4、nally)由缺省处理方法来处理。,6.3捕获异常,6.3.1 try语句,使用try语句时需要注意以下两点: 不要把所有的业务逻辑代码全部放在try语句中,因为使用try语句时其效率要远远低于正常的代码执行效率,放置在try语句中的代码往往是一些核心的容易出现异常的代码;在try语句中声明变量时,该变量的作用域为此try语句内部,如果试图在程序的其它任何地方访问该变量都是错误,因此 变量声明的位置至关紧要。,6.3.2 catch语句,一个try块后面只有一个catch块会被执行,绝不可能有多个catch块被执行。 形式: catch(异常类型 对象) 运行时系统通过参数值把被抛弃的异常对象

5、传递给catch语句。 程序设计中要根据具体的情况来选择catch语句的异常处理类型,一般应该按照try代码段中异常可能产生的顺序及其真正类型进行捕获和处理,尽量避免选择最一般的异常类型作为catch语句中指定要捕获的类型。,TestException3.java,6.3.3 finally语句,finally语句为异常处理提供一个统一的出口,无论try所指定的程序块中是否抛出异常,finally所指定的代码都要被执行,它提供了统一的出口。通常在finally语句中可以进行资源的清除和释放工作,如关闭打开的文件、删除临时文件、关闭打开的数据库连接等。finally非必须,在异常捕获中,try块

6、必须有,catch和finally可选,但是至少有其中一个。,捕捉SomeException2时:,没有捕获到异常时:,6.3.3 finally语句,除非在try块、catch块中调用了System.exit(1)来退出虚拟机,否则finally总会被执行。,6.4声明异常,如果在一个方法中生成了异常,但是该方法并不处理它产生的异常,而是沿着调用层次向上传递,交由调用它的程序来处理这些异常,这就是声明异常。,声明异常的方法是在产生异常的方法名后面加上要抛出(throws)的异常的列表,其语法格式为: 修饰符返回值数据类型 方法名(形参列表) throws异常1,异常2, 方法体; retur

7、n返回表达式; ,6.4声明异常,TestException41.java,注意:,方法中含有异常: 如果你能对此异常进行处理,则用try catch 捕捉异常 如果你不能对此异常进行处理,则继续往外抛。 要非常注意,如果你捕捉住异常之后一定要做处理(哪怕打印),不要捕捉之后什么都不做,这样的话你就把异常给掩盖了。,手动抛异常,使用throw语句可以主动地抛出一个异常对象。 throw语句的语法格式如下:throw Exception Instance;,TestException42.java,自定义异常类必须继承Exception基类,其语法格式为: 修饰符 class 自定义异常类名 e

8、xtends Exception 自定义异常同样要用try-catch-finally捕获, 而且也必须由用户自己主动地抛出(throw),6.6 自定义异常类,使用自定义异常一般有如下步骤: 1、通过继承Exception类来声明自己的异常类。 2、在方法适当的位置生成自定义异常的实例,并用throw语句抛出。 3、在方法的声明部分用throw语句声明该方法可能抛出的异常。,6.6 自定义异常类,6.6 自定义异常类,注意:,当有多个catch块时,应该先捕捉小的异常,再捕捉大异常。也就是当多个catch块中存在的异常类有继承关系时,子类应该先被捕捉。,访问异常信息,e.getMessage():返回该异常的详细描述字符串。 e.printStackTrace():将该异常类的跟踪栈信息输出到标准错误输出。,- java - java.lang.IndexOutOfBoundsException: 越界了at ThrowException.m1(TestException42.java:22)at ThrowException.m2(TestException42.java:27)at TestException42.main(TestException42.java:7)输出完成 (耗时 0 秒) - 正常终止,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报