Java应用程序开发 (11).pptxVIP

  • 1
  • 0
  • 约5.86千字
  • 约 49页
  • 2019-07-17 发布于辽宁
  • 举报
学习情境十一 异常 ;知识目标 理解什么是异常以及异常的处理机制; 理解各种异常的意义; 理解为什么要使用自定义的异常。 能力目标 能够正确使用try/catch/finally组合语句捕捉并处理异常; 能够正确使用throws语句传递异常; 能够正确使用throw语句抛出异常; 能够正确定义自定义的异常,并能够正确使用自定义异常。;情景再现与任务分析;Java语言中使用异常的好处有: 错误处理代码和正常处理代码分开。减少了代码的数量,同时增加了程序的可读性; 把各种不同的异常事件进行分类,体现了良好的层次性,提供了良好的接口; 异常事件可以沿着调用栈自动向上传播,可以在适当的方法中被捕捉处理。也就是说,允许我们在一个地方将精力集中在要解决的问题上,然后在另一个地方处理来自那个代码内部的错误。;四个任务;任务一 认识Java语言的异常;运行时系统为每个运行中的应用程序产生一个调用栈,它是这个应用程序中已经被调用的方法列表,按照方法的调用顺序进行排列。图11-1是调用栈的示意图。;运行时系统在调用栈中搜索能处理这个异常的方法,因为这些方法中包含有处理这个异常的代码。这些代码块就称为异常处理器。搜索工作从方法中发生错误的地方开始,沿着调用栈中调用方法相反的顺序往上搜索。当找到某个适当的异常处理器时,运行时系统就把这个异常对象传递给这个异常处理器。如果某个异常处理器所能处理的类型与抛出的异常对象的类型匹配,那么它就是那个适当的异常处理器。;找寻异常处理器的过程称为捕捉异常。如果运行时系统在调用栈中没有找到适当的异常处理器,如图11-2所示,那么应用程序就会结束运行。;【例11-1】一个产生异常情况的程序;【例11-2】添加了异常处理的应用程序;【例11-3】演示调用栈。;任务二 处理异常;1. 处置异常的两种方式;比喻:例如,班级中两个同学吵架。对这样的异常事件,有两种处理方式: 班级内部处理; 不在班级内部处理,上报到更高一级单位(例如,上报到系里面)。;2. 异常的类型;Throwable类有两个直接子类: Error类 Exception类 Throwable、Error和Excepion类都位于java.lang包中 RuntimeException是Exception的一个子类,Java对RuntimeException类进行特别处理 Throwable类之所以派生出这么多子类,是为了用它们来识别程序执行期间所产生的各种类型的异常。根据程序对异常的处理方式,异常被分成3种。;1)已经检查的异常(checked exception);类名;如果某个方法中有可能抛出已经检查的异常,那么对于该方法而言,要么必须使用try/catch/finally组合语句捕捉并处理异常,要么必须使用throws子句把异常传递出去。否则,源程序不能被编译成功。已经检查的异常就是在编译阶段必须进行检查的异常。 如果使用Eclipse集成环境来编写Java程序,在编写过程中就能经常看见Eclipse提示的错误信息。这些错误信息大部分都能在表11.2中查到。;2)Error异常;3)运行时异常,即RuntimeException以及子类所异常;类名;Error异常和RuntimeException异常统称为未检查的异常(unchecked exceptions)。 如果某个方法内部只产生未检查的异常,那么对于这个方法而言,既不需要在方法内部使用try/catch/finally组合语句来捕捉并处理异常,也不必在定义的时候使用throws子句来传递异常。 ArithmeticExceptions是一种RuntimeException异常,这是未检查的异常。例11-1程序对这个异常不做任何处理,而例11-2程序使用try/catch/finally组合语句对这个异常做了适当的处理。;3. 捕捉并处理异常编程(try/catch/finally组合语句);1)try语句块是一个警戒区域,如果某些代码可能产生异常,并且这些异常要在方法内部被捕捉处理,那么这些代码就必须放在这个区域内。try语句块不能单独存在,必须和catch语句块或者finally语句块共存。 2)catch语句块必须紧跟在try语句块后面,捕捉try语句块中抛出的特定的异常并进行处理。catch语句块也不能单独存在,必须依附在某个try语句块后面。catch关键字后面的括号中用一个参数来标识所要捕捉的异常类型。由于try语句块中可能抛出各种异常,因此同一个try语句块后面可以按一定的顺序接上多个的catch语句块。如果try语句块中抛出的某个异常的类型与某个catch语句块要捕捉的异常类型匹配,那么这个异常就被这个catch语句块捕捉,其中的代码就会被执行。;3)finally语句块中也必须

文档评论(0)

1亿VIP精品文档

相关文档