![Java语言程序设计案例教程 第6章_第1页](http://file2.renrendoc.com/fileroot_temp3/2021-11/19/5e65a172-1dd8-4aa6-9ace-0195acc82b16/5e65a172-1dd8-4aa6-9ace-0195acc82b161.gif)
![Java语言程序设计案例教程 第6章_第2页](http://file2.renrendoc.com/fileroot_temp3/2021-11/19/5e65a172-1dd8-4aa6-9ace-0195acc82b16/5e65a172-1dd8-4aa6-9ace-0195acc82b162.gif)
![Java语言程序设计案例教程 第6章_第3页](http://file2.renrendoc.com/fileroot_temp3/2021-11/19/5e65a172-1dd8-4aa6-9ace-0195acc82b16/5e65a172-1dd8-4aa6-9ace-0195acc82b163.gif)
![Java语言程序设计案例教程 第6章_第4页](http://file2.renrendoc.com/fileroot_temp3/2021-11/19/5e65a172-1dd8-4aa6-9ace-0195acc82b16/5e65a172-1dd8-4aa6-9ace-0195acc82b164.gif)
![Java语言程序设计案例教程 第6章_第5页](http://file2.renrendoc.com/fileroot_temp3/2021-11/19/5e65a172-1dd8-4aa6-9ace-0195acc82b16/5e65a172-1dd8-4aa6-9ace-0195acc82b165.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、本章主要介绍编程中常见的错误,以及在程序运行过程中出现错误或者异常本章主要介绍编程中常见的错误,以及在程序运行过程中出现错误或者异常现象时,现象时,Java语言的处理机制和方法,包括异常的概念、异常的处理方语言的处理机制和方法,包括异常的概念、异常的处理方法等内容。法等内容。 本章要点本章要点l6.1 常见错误常见错误l6.2 异常处理异常处理l思考与练习思考与练习6 66.2.1 什么是异常处理什么是异常处理异常指的是程序运行时出现的非正常情况,又称为差错、违例等。在上一节中介绍的运行错误就是异常的主要现象。当异常现象发生时,会造成程序运行中断、系统死机等问题。Java程序可以用特定语句来处
2、理异常并继续程序执行,而不让程序中断。Java语言提供一个异常处理类Exception类,专门处理程序执行期间的错误。每当Java程序运行过程中发生一个可识别的运行错误时,即该错误有一个异常类与之相对应时,系统都会产生一个相应的该异常类的对象,即产生一个异常。Java语言异常处理机制有以下一些优点:(1)Java语言通过面向对象的方法进行异常处理,把各种不同的异常事件进行分类,体现了良好的层次性,提供了良好的接口,这种机制对于具有动态运行特性的复杂程序提供了强有力的控制方式。(2)Java语言的异常处理机制使得处理异常的内容和程序本身内容分开,降低了程序的复杂性,增强了程序的可读性。(3)由于
3、把异常事件当成对象来处理,利用类的层次性可以把多个具有相同父类的异常统一处理,也可区分不同的异常分别处理,使用非常灵活。 6.2.2 Exception类类Java语言的异常类是处理运行时错误的特殊类,每一种异常类对应一种特定的运行错误。所有的Java异常类都是系统类库中的Exception类的子类 。Exception类有若干子类,每一个子类代表了一种特定的运行时错误。这些子类有些是系统事先定义好并包含在Java类库中的,称为系统定义的运行异常。系统定义的运行异常通常对应着系统运行错误。由于这种错误可能导致操作系统错误甚至是整个系统的瘫痪,所以需要定义异常类来特别处理。常见的系统定义异常如下
4、:(1)ArithmeticException:数学错误。(2)ArrayIndexOutOfBoundsException:数组下标越界使用。(3)ClassNotFoundException:未找到欲使用的类。(4)FileNotFoundException:未找到指定的文件或目录。6.2.2 Exception类类(5)InterruptedException:线程在睡眠、等待或其他原因暂停时被其他线程打断。(6)IOException:输入、输出错误。(7)MalformedURLException:URL格式错误。(8)NullPointerException:引用空的尚无内存空间的
5、对象。(9)SecurityException:安全性错误,如Applet欲读写文件。(10)UnknownHostException:无法确定主机的IP地址。系统定义的异常主要用来处理系统可以预见的较常见的运行错误,对于某个应用程序所特有的运行错误,则需要编程者根据程序的特殊逻辑在应用程序中自行创建自定义的异常类和异常对象。这种用户自定义异常主要用来处理用户程序中特定的逻辑运行错误。 6.2.3 异常处理的过程异常处理的过程在Java语言中,异常处理最常用的是try-catch-finally语句结构,以及throw和throws关键字。下面我们将一一进行介绍。1try-catch-fina
6、lly通过使用try-catch-finally语句来捕获一个或多个异常,基本格式为:try 语句体语句体catch( 异常错误类型异常错误类型 变量名变量名 ) 语句体语句体finally 语句体语句体6.2.3 异常处理的过程异常处理的过程其中,catch语句可以有一个或多个,而finally语句可以没有,但是,至少要有一个catch语句或finally语句。try语句中的语句体是程序中有可能会产生一个或多个异常的语句。catch语句的参数类似于方法的参数,其包括一个异常类型和一个异常对象。异常类型必须为Exception类的子类,它指明了catch语句所处理的异常类型。在程序运行时,当t
7、ry语句体中产生异常时,系统会通过catch语句捕获这个异常,然后执行catch语句中的语句体对该异常进行处理。catch语句可以有多个,分别处理不同类的异常。Java运行时系统从上到下分别对每个catch语句处理的异常类型进行检测,直到找到类型相匹配的catch语句为止。这里,类型匹配指catch所处理的异常类型与生成的异常对象的类型完全一致或者是它的父类。因此,catch语句的排列顺序应该是从特殊到一般。6.2.3 异常处理的过程异常处理的过程也可以用一个catch语句处理多个异常类型,这时它的异常类型参数应该是这多个异常类型的父类,程序设计中要根据具体的情况来选择catch语句的异常处理
8、类型。在捕捉异常时,还可以使用finally语句。在try-catch之后接上finally语句,表示执行try-catch描述后,无论有无异常,最后必须执行finally语句中的语句体。6.2.3 异常处理的过程异常处理的过程2关键字关键字throws和和throw在有些情况下,程序并不需要使用try-catch-finally处理它所生成的异常,而是由调用它的方法来处理这些异常,这时就要用到throws子句,它包含在方法的声明中。其格式如下:返回类型 方法名( 参数 ) throws 异常类名 语句体其中,异常类名可以是多个,但需要用逗号隔开。6.2.3 异常处理的过程异常处理的过程2关键
9、字关键字throws和和throw一般这种抛出异常的语句应该被定义为在满足一定条件时执行,例如:把throw语句放在if语句的判断分支中,只有当if条件得到满足,即用户定义的逻辑错误发生时才执行。含有throw语句的方法,应该在方法头定义中增加如下部分:throws 异常类名这样做主要是为了通知所有欲调用此方法的方法。由于该方法包含throw语句,所以要准备接受和处理它在运行过程中可能会抛出的异常。如果方法中的throw语句不止一个,定义方法时的异常类名也不止一个,应该包含所有可能产生的异常。 6.2.4 多异常的处理多异常的处理catch语句用来接收try语句体中可能产生的异常,一个catc
10、h语句通常会用同种方式来处理它所接收到的所有异常,但是实际上一个try语句体可能产生多种不同的异常,如果希望能采取不同的方法来处理这些异常,就需要使用多异常处理机制。多异常处理是通过在一个try语句后面定义若干个catch语句来实现的,每个catch语句体用来接收和处理一种特定的异常对象。当try语句体抛出一个异常时,程序的流程首先转向第一个catch语句,并审查当前异常对象可否为这个catch语句所接收。能接收是指异常对象与catch的参数类型相匹配,也就是说,异常对象与参数属于相同的异常类、异常对象属于参数异常类的子类或者异常对象实现了参数所定义的接口。如果try语句体产生的异常对象被第一
11、个catch语句所接收,则程序的流程将直接跳转到这个catch语句的语句体中,语句体执行完毕后就退出当前方法,try语句体中尚未执行的语句和其他的catch语句将被忽略。6.2.4 多异常的处理多异常的处理如果所有的catch语句都不能与当前的异常对象匹配,则说明当前方法不能处理这个异常对象,程序流程将返回到调用该方法的上层方法。如果这个上层方法中定义了与所产生的异常对象相匹配的catch语句,流程就跳转到这个catch语句中,否则将继续回溯更上层的方法。如果所有的方法中都找不到合适的catch语句,则由Java运行系统来处理这个异常对象。此时通常会中止程序的执行,退出虚拟机返回操作系统,并在
12、标准输出上打印相关的异常信息。如果try语句体中所有语句的执行都没有引发异常,则所有的catch语句体都会被忽略而不予执行。catch语句体中的语句应根据异常的不同而执行不同的操作,比较通用的操作是打印异常和错误的相关信息,包括异常名称、产生异常的方法名等。由于异常对象与catch语句的匹配是按照catch语句的先后排列顺序进行的,所以在处理多异常时应注意认真设计各catch语句的排列顺序。一般来说,将处理较具体和较常见的异常的catch语句应放在前面,而可以与多种异常相匹配的catch语句应放在较后的位置。此外,不能将子类异常的catch语句放在父类的后面,否则在编译时会产生错误。6.2.5
13、 自定义异常处理自定义异常处理Java类库中定义的异常主要用来处理系统可以预见的比较常见的运行错误。如果某个应用程序有特殊的要求,则可能出现系统不能识别的运行错误,这时就需要用户自己创建异常和异常类,使系统能够识别这种错误并进行处理,增强用户程序的健壮性和容错性,从而使系统更加稳定。用户自定义的异常类一般都是Exception类的直接或间接子类。创建自定义异常的基本步骤如下。(1)定义一个新的异常类,其必须继承Exception类、Exception类的子类或用户自定义的其他异常类。定义的格式如下:class class 自定义异常类名自定义异常类名 extends extends 父异常类名
14、父异常类名 语句体语句体 6.2.5 自定义异常处理自定义异常处理(2)为新的异常类定义属性和方法,或重载父类的属性和方法,使之能够体现出程序中出现这种异常的信息。例如:public class NumberRangeExceptionpublic class NumberRangeException extends Exception extends Exception public NumberRangeException public NumberRangeException()() super(); super(); public NumberRangeException public
15、 NumberRangeException( String s )( String s ) super( s ); super( s ); 6.2.5 自定义异常处理自定义异常处理上面的程序定义了一个名为NumberRangeException的异常类,它是Exception类的子类。该类具有两个构造方法,第一个构造方法使用super();语句直接调用父类的没有参数的构造方法,第二个构造方法使用super( s );语句直接调用父类参数为字符串类型的构造方法。当然,我们也可以自己编写构造方法的具体内容,以便完成更复杂的操作。(3)抛出用户自定义的异常。用户自定义异常不可能依靠系统自动抛出,而必
16、须通过throw语句抛出异常,通常是通过条件判断确定是否抛出这个异常类的新对象。抛出用户自定义异常格式如下:返回类型 方法名( 参数1, 参数2, ) throw 自定义异常类 if( if( 条件判断条件判断 ) ) throw ( new throw ( new 自定义异常类名自定义异常类名( this ) );( this ) ); 6.2.5 自定义异常处理自定义异常处理上面的程序定义了一个名为NumberRangeException的异常类,它是Exception类的子类。该类具有两个构造方法,第一个构造方法使用super();语句直接调用父类的没有参数的构造方法,第二个构造方法使用super( s );语句直接调用父类
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学生贫困补助申请书
- 甲氧基酚项目风险识别与评估综合报告
- 企业数据转换过程中的审计跟踪
- DB2201-T 45-2023 政务服务场所建设规范
- 2022-2023学年内蒙古包头市高一上学期期末物理试卷(解析版)
- 新版北师版一年级下册数学课件六 有趣的平面图形(一)第4课时 动手做(三)
- 7.210000以内数的认识(含答案)
- 2025年一次性可降解保鲜袋行业深度研究分析报告
- Module 5 Unit 10 Can I help you综合练习 教科版(含答案)
- 现代企业适应环境变化的方法探讨
- 供电工程施工方案(技术标)
- 2023届江西省九江市高三第一次高考模拟统一考试(一模)文综试题 附答案
- 2024年共青团入团积极分子、发展对象考试题库及答案
- DBJ∕T 13-478-2024 福建省瓶装液化石油气信息管理与数据采集技术标准
- 2025年度院感管理工作计划(后附表格版)
- 化肥销售工作计划
- 2024浙江华数广电网络股份限公司招聘精英18人易考易错模拟试题(共500题)试卷后附参考答案
- 飞行器小学生课件
- 2024年山东省济南市中考英语试题卷(含答案解析)
- 2024年社区警务规范考试题库
- 2025中考英语作文预测:19个热点话题及范文
评论
0/150
提交评论