版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
面向对象程序设计项目教程本章学习目标:●
理解异常的概念和异常处理机制●
理解Java异常的分类●
掌握try、catch、finally使用方法●
掌握throw、throws的使用方法●
掌握自定义异常的定义和使用方法项目9掌握异常处理任务1part
了解异常类Java提供了丰富的异常类,当异常发生时,由运行时环境自动产生相应异常类的对象保存相应异常信息,这些异常类之间有严格的继承关系。如图9.1所示列举了Java常见的异常类之间的继承关系。1.1异常类Java中的异常类可以分为两种:
(1)错误(Error):一般指与虚拟机相关的问题,如系统崩溃、虚拟机错误、动态链接失败等,这些错误无法恢复或捕获,将导致应用程序中断。
(2)异常(Exception):因程序编码错误或外在因素导致的问题,这些问题能够被系统捕获并进行处理,从而避免应用程序非正常中断,例如:除以0、对负数开平方根、空指针访问等。Throwable是所有异常类的父类,Error和Exception都继承此类。当程序产生Error时,因系统无法捕获Error并处理,程序员将无能为力,程序只能中断;而当发生Exception时,系统可以捕获并做出处理。1.1异常类Exception异常从编程角度又可以分为以下两种类型:
(1)非检查型异常:编译器不要求强制处置的异常,该异常是因编码或设计不当导致的,这种异常可以避免,RuntimeException及其所有子类都属于非检查型异常。
(2)检查型异常:编译器要求及其子类必须处理的异常,该异常是程序运行时因外界因素而导致的,Exception及其子类(RuntimeException及其子类除外)都属于检查型异常。
常见的异常类说明如表9-1所示1.1异常类Java提供的异常处理机制有两种:
(1)使用try…catch捕获异常:将可能产生异常的代码放在try语句中进行隔离,如果遇到异常,程序会停止执行try块的代码,跳到catch块中进行处理。
(2)使用throws声明抛出异常:当前方法不知道如何处理所出现的异常,该异常应由上一级调用者进行处理,可在定义该方法时使用throws声明抛出异常。Java的异常处理机制具有以下几个优点:
(1)异常处理代码和正常的业务代码分离,提高了程序的可读性,简化了程序的结构,保证了程序的健壮性。
(2)将不同类型的异常进行分类,不同情况的异常对应不同的异常类,充分发挥类的可扩展性和可重用性的优势。
(3)可以对程序产生的异常进行灵活处理,如果当前方法有能力处理异常,就使用try…catch捕获并处理;否则使用throws声明要抛出的异常,由该方法的上一级调用者来处理异常。1.2异常处理机制任务2part捕获异常Java中捕获异常并处理的语句有以下几种:(1)try…catch语句(2)try…catch…finally语句(3)自动关闭资源的try语句(4)嵌套的try…catch语句(5)多异常捕获捕获异常捕获异常2.1try…catch语句try…catch语句的基本语法格式如下:try{ //业务实现代码(可能发生异常) ......}catch(异常类1异常对象){ //异常类1的处理代码}catch(异常类2异常对象){ //异常类2的处理代码}......//可以有多个catch语句catch(异常类n异常对象){ //异常类n的处理代码}
其中:
(1)执行try语句中的业务代码出现异常时,系统会自动生成一个异常对象,该异常对象被提交给Java运行时环境,此过程称为“抛出异常”;
(2)当Java运行时环境收到异常对象时,会寻找能处理该异常对象的catch语句,即跟catch语句中的异常类型进行一一匹配,如果匹配成功,则执行相应的catch块进行处理,这个过程称为“捕获异常”;
(3)try语句后可以有一条或多条catch语句,这是针对不同的异常类提供不同的异常处理方式。2.1try…catch语句
所有异常对象都包含以下几个常用方法用于访问异常信息:
(1)getMessage()方法:返回该异常的详细描述字符串;
(2)printStackTrace()方法:将该异常的跟踪栈信息输出到标准错误输出;
(3)printStackTrace(PrintStreams)方法:将该异常的跟踪栈信息输出到指定输出流;
(4)getStackTrace()方法:返回该异常的跟踪栈信息。
2.2try...catch...finally语句try…catch…finally语句的语法格式如下:try{ //业务实现代码(可能发生异常) ......}catch(异常类1异常对象){//异常类1的处理代码
}catch(异常类2异常对象){//异常类2的处理代码
}......//可以有多个catch语句catch(异常类n异常对象){//异常类n的处理代码
}finally{//资源回收语句
}
其中:1、try块是必需的,catch块和finally块是可选的,但catch块和finally块二者至少出现其一,也可以同时出现,即有两种形式的用法:try…finally和try…catch…finally。2、try…catch…finally是语句的顺序不能颠倒,所有的catch块必须位于try块之后,finally块必须位于所有的catch块之后。2.3嵌套的try...catch语句
在某些时候,需要使用嵌套的try…catch语句。例如,代码块的某一部分产生一个异常,而整个代码块又有可能引起另外一个异常,此时需要将一个异常处理嵌套到另一个异常处理中。2.4多异常捕获
在Java7以前,每个catch块只能捕获一种类型的异常。但从Java7开始,一个catch块可以捕获多种类型的异常。使用一个catch块捕获多种类型的异常时的语法格式如下:try{ //业务实现代码(可能发生异常) ......}catch(异常类A[|异常类B...|异常类N]异常对象){ //多异常捕获处理代码}......//可以有多个catch语句其中:(1)捕获多种类型的异常时,多种异常类型之间使用竖杠“|”进行间隔;(2)多异常捕获时,异常变量默认是常量,因此程序不能对该异常变量重新赋值。任务3part抛出异常3.1throw抛出异常对象
在程序中,如果需要根据业务逻辑自行抛出异常,则应该使用throw语句。throw语句抛出的不是异常类,而是一个异常实例对象,并且每次只能抛出一个异常实例对象。throw抛出异常对象的语法格式如下:throw异常对象
3.2throw声明抛出异常序列throws声明抛出异常序列的语法格式如下:[访问符]<返回类型>方法名([参数列表])throws异常类A[,异常类B...,异常类N]{ //方法体}任务4part自定义异常
通常情况下,异常类直接或间接地继承于类Exception,类Exception继承于类Throwable,而类Throwable则直接继承于类Object。当只有一个对象是类Throwable或其子类的实例时,它才可以被Java虚拟机或throw语句抛出。
用户自定义异常类都应该继承Exception基类或RuntimeException基类。定义异常类时通常需要提供两个构造方法:一个是无参数的构造方法;另一个是带一个字符串参数的构造方法,这个字符串将作为该异常对象的描述信息(也就是异常对象的getMessage()方法的返回值)。
下述代码定义了一个自定义异常类的基本格式,代码如下所示。自定义异常【代码9.10】AuctionException.javapackagecom;publicclassAuctionExceptionextendsException{ //无参数的构造方法 publicAuctionException(){ } //带一个字符串参数的构造方法 publicAuctionException(Stringmsg){ super(msg); }}自
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年中兴通讯研发工程师面试问题及答案参考
- 2026年医学影像分析师面试题库与答案
- 公共浴室消毒制度
- 酒店资产管理制度
- 酒店公共区域卫生管理制度
- 临床检验类设备组装调试工岗后强化考核试卷含答案
- 磷酸生产工安全宣传水平考核试卷含答案
- 船舶机工岗前技术落地考核试卷含答案
- 裁边拉毛工岗前技术应用考核试卷含答案
- 肉制品加工工诚信考核试卷含答案
- 04S519小型排水构筑物1
- 光纤激光打标机说明书
- 劳动者个人职业健康监护档案
- 《两角和与差的正弦、余弦、正切公式》示范公开课教学PPT课件【高中数学人教版】
- 治理现代化下的高校合同管理
- 境外宗教渗透与云南边疆民族地区意识形态安全研究
- GB/T 28920-2012教学实验用危险固体、液体的使用与保管
- GB/T 26389-2011衡器产品型号编制方法
- GB/T 16588-2009带传动工业用多楔带与带轮PH、PJ、PK、PL和PM型:尺寸
- 人大企业经济学考研真题-802经济学综合历年真题重点
- 建筑抗震鉴定标准课件
评论
0/150
提交评论