面向对象Java应用开发中的异常处理技术_第1页
面向对象Java应用开发中的异常处理技术_第2页
面向对象Java应用开发中的异常处理技术_第3页
面向对象Java应用开发中的异常处理技术_第4页
面向对象Java应用开发中的异常处理技术_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、面向对象Java应用开发中的异常处理技术异常(意外)处理技术 在本讲将学习到如下的知识点Java中的异常技术Java中的异常处理实现机制Java中的异常编程规则try、catch、finally语句声明和抛出异常 Java提供了一套强大的异常处理机制,可以帮助开发人员处理和预防程序中潜在的错误。充分应用Java异常处理的机制,可以使得程序更为健壮、运行中更为安全。1、有关程序中的错误处理方面的基础知识(1)明确错误处理的重要性 在进行程序设计时,错误的产生是不可避免的这些错误不仅会导致应用程序异常中止而且可能引起系统的崩溃,这是任何程序设计语言都要解决的问题。(2)需要思考的问题如何处理错误?

2、把错误交给谁去处理?程序还能够恢复(继续执行)吗?如果能够,哪又该如何从错误中恢复?(3)需要深入地探寻Java异常处理技术的相关问题如何在一个多层的J2EE项目中定义异常类?在项目中的每一层如何进行异常处理?异常何时被抛出?异常何时被记录?异常该怎么记录?何时需要把checked异常转化成unchecked异常?同样何时需要把unChecked异常转化成checked异常?异常信息是否应该呈现到前端界面?如何显示?人“生病”并不可怕,只要能够“康复”就行!Java提供异常处理技术2、有关Java异常处理方面的基础知识(1)什么是异常程序在运行过程中所发生的错误事件(如数组越界、文件操作时未找

3、到文件、除法溢出等)而这些错误在设计时不能准确地识别出但又可能会发生或者不会发生但这些错误是可被捕获和处理的错误。(2)正确地理解程序开发中所可能遇到的三种错误语法错误它是编译时的错误,一般可以由IDE工具及时提示和报告出具体的错误)。逻辑错误程序能够正常编译通过,但在运行时出现错误;一般需要利用IDE工具中提供的调试功能发现出。异常错误它同样也是程序在运行时出现的错误,但取决于执行的环境,哪对这些错误又是如何处理呢?3、异常的特点(以“人身保险”为例加以说明异常的特性)(1)程序在运行过程中所发生的错误事件(2)程序员在编程时无法预知它是否会产生(3)产生与否取决于用户当时的执行环境。生活中

4、的“有备无妨”的预先考虑的原则 Exception更准确的中文翻译应该是“意外”4、Java中的异常处理技术(1)Java中的异常处理的技术特性将每类错误转化为某个Exception类的子类对象(OO封装),同一类错误在不同的代码中出现时,以相同的异常类型表示它是OO的错误处理方法-将“异常”也就是“可捕获和能够处理的错误”进行抽象、封装和层次化。可以达到“分门别类”地进行错误处理,使得错误处理代码更加清晰、简洁,错误信息也更详细和有价值。(2)常规的错误处理技术所存在的缺点代码很难阅读、调试和维护,并且容易忽视错误通过函数的返回值发出错误信息,无法提供错误产生的内部细节和详细信息。可能因为函

5、数是由不同的程序员编写,当同一类的错误在不同的函数中返回时,返回的错误码和实际的错误信息并不一致易于导致错误的“二义性” 。 (3)面向过程的错误处理和面向对象的错误处理对比示例Exception就相当于一个错误类型,如果要定义一个新的错误类型只需要从Exception类扩展。“正常功能”代码与“错误处理”代码相互分离。 5、说明应用异常处理技术优点的示例在实现某个数据校验方法时,比如对用户名的校验,只需返回一个boolean值以反映用户输入的数据是否有误。而如果是身份证号码这类数据出错了,可能就需要提供更“细粒度”的错误信息给用户,告诉用户是与“出生日期”不符还是“数据位数”不够等更详细的说

6、明信息。对这种错误种类较多的应用情况,其一可以返回错误代号(如 int 值)来区别各种错误-这是非面向对象语言的一种做法。而在面向对象语言中,可以声明一个自定义的异常类 UserInfoException 来包装错误类型和各种可能的错误信息,这比返回错误代号更详细和更好理解。 因为错误代号需要解析成具体的错误信息,这个解析工作还得由校验器类的API“客户类”来解释-其它的业务逻辑类,从而导致业务逻辑类还是耦合了数据校验错误处理逻辑。6、异常处理的优点总结(OOP方式的错误处理编程)(1)能将“错误处理” 与“常规功能”代码相分离,程序更加健壮、简洁;(2)能将错误沿调用栈向上传播并有助于解决潜

7、在的问题、做到预防性设计。(3)能按错误类型分门别类地处理对代码中的可能错误类型可以同时捕获,并允许采用类似于Switch Case 语句的分类方式过滤异常错误。(4)错误类型的可扩展性好 如果要定义一个新的错误类型只需要从Exception类扩展。7、Java中的异常处理实现机制(1)异常处理机制主要体现在“抛出异常”并“捕获异常”这两个层次。(2)抛出异常当程序执行过程中产生异常时,将生成一个异常类对象(它代表某一异常类型的错误事件)该异常对象将被提交给Java运行时系统,这个过程称为抛出(throw)异常。(3)捕获异常 当Java运行时系统接收到异常对象时,会寻找能处理这一异常的程序代

8、码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。8、如何捕获异常采用try、catch、 finally语句块。实现“错误的产生”与“错误的处理”分离!9、try、catch、finally语句块的用法(1)try语句块它指定可能会产生异常的语句范围,也即为catch规定异常捕获的语句范围。注意:异常被捕获和处理时程序执行流程见下面的图示(2)catch语句块它指明需要捕获异常事件的类型并相应地给出处理的方法(代码)。(3)finally它指定一代码块,不管是否有异常产生或是否捕获住该异常,程序都从此处继续向后执行。从而达到提供统一的出口(如关闭文件、清除系统资源等功能)。1

9、0、异常处理的形式(1)try-catch 实例一finally为可选形式,只在这些应用场合中需要它!catch(IOException e) catch(FileNotFoundException e) /永远不会被执行(2)多catch(try-catch-catch)应用示例(3)try/catch/finally应用示例11、程序中对异常处理的方法 当编程使用某一个带有异常定义的方法时,程序员可以有如下两种处理异常的方法。(1)方法一 通过try、catch、finally语句块,捕获住该异常。(2)方法二不捕获和处理该异常但必须继续上传(递交给上一级的调用者来处理),这可通过thro

10、ws语句来声明所抛出的异常。 12、声明和抛出异常(1)什么场合下应该要进行异常声明应该在下面的场合中给出异常声明在可能会出现异常的方法声明中不捕获和处理异常的函数声明中(继续上传异常)(2)异常定义的语法格式 在函数声明的后面采用“throws 异常类型名列表”来定义异常。如下示例:返回类型 函数名(形参定义) throws 异常类型名 函数体定义;(3)异常的抛出系统自动抛出的异常 程序中出现系统中定义的异常时,可以由系统自动来抛出它。对于在方法定义时采用throws所声明的某个异常类型时,在其方法体中必须使用“throw 异常事件(对象名)” 来抛出该种类型的异常事件(即程序员自己抛出程序中定义的自己的异常事件),以便上一级的调用者程序来捕获并处理它。属于unChecked异常,可以不用捕获它属于Checked异常,必须捕获它13、JDK系统中异常类的层次结构(1)了解JDK中预定义的异常API的继承关系(2)明确Checked和UnChecked类型的异常不同的处理要求当一个方法去调用一个可能抛出checked异常的方法,必须通过trycatch

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论