第七章 Java中的异常(例外)

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第 七 章 Java中的异常(例外) Java中的异常(例外)
• 2.抛出异常: 抛出异常: 抛出异常 • 1 > 系统自动抛出的异常(程序中出现系统中定义的异常时 系统中定义的异常时 系统中定义的 异常时,可 以由系统自动抛出)。 • 2>对于在函数定义时采用throws声明所不处理的异常类型时, 在其函数体中必须使用“throw 异常事件(对象名)” 来抛出 该种类型的异常事件(程序员自己抛出程序中定义的自己的异 程序员自己抛出程序中定义的自己的异 常事件),以便上一级的调用者来捕获并处理它。 常事件 • 例如: IOException e=new IOException(); throw e ; 可以抛出的异常必须是Throwable或其子类的实例。下面的 语句在编译时将会产生语法错误: throw new String("want to throw"); • ExceptionDemo2.java
第 七 章 Java中的异常(例外) Java中的异常(例外)
• finally:它指定一代码块,不管是否有异常产生或是否 finally: 捕获住该异常,程序都从此处继续向后执行。从而达到 提供统一的出口(如关闭文件、清除系统资等)。 • finally • { if(fis !=null) • { System.out.println(“Closing file…”); • fis.close(); • } • else { System.out.println(“FileInputStream not Open !”); • } • }
第 七 章 Java中的异常(例外) Java中的异常(例外)
• • • • • • • • • • • • • • • • • • • • public class ExceptionDemo //实例一 实例一 { static void compute(int a) throws Exception { if(a >10) throw new Exception(); System.out.println("Normal Exit"); } public static void main(String args[ ]) { try { int Value=1; 异常的捕获 compute(Value); Value=20; compute(Value); } catch(Exception e) { System.out.println("Caught" + e); } } }
public class Inheriting { public static void f( ) throws MyException { System.out.println("Throwing MyException from f()"); throw new MyException(); //抛出自定义异常 } ……… public static void main(String[] args) { try { f(); } //处理自定义异常 catch(MyException e) { e.printStackTrace(); } ……… } //end of main() } //end of class Inheriting
第 七 章 Java中的异常(例外) Java中的异常(例外)
3、异常类的层次和主要子类
• 在jdk中,每个包中都定义了异常类,而所有的异常类都直接或间接地继承 于Throwable类。 • java中的异常类可分为两大类:(它们均被放在java.lang包中) Error: 动态链接失败,虚拟机错误等,通常Java程序不应该捕获这类异常, 也不会抛弃这种异常。 Exception 1)运行时异常: 继承于RuntimeException的类都属于运行时异常,例如算术异常(除 零错)、数组下标越界异常等等。由于这些异常产生的位置是未知的, Java 编译器允许程序员在程序中不对它们做出处理。 2)非运行时异常: 除了运行时异常之外的其他由Exception 继承来的异常类都是非运行时 的异常,例如FileNotFoundException(文件未找到异常)。Java编译器要 求在程序中必须处理这种异常,捕获异常或者声明抛弃异常。 • 异常类的方法和属性(祥见类库)

也就是说不捕获和处理该异常, 也就是说不捕获和处理该异常,但但必须 继续上传(递交给上一级的调用者来处理),
第 七 章 Java中的异常(例外) Java中的异常(例外)
• • • • • • • • • • • • • • • import java.io.*; //实例二 实例二 class ExceptionDemo2 { public static void main(String args[]) throws Exception (继续上传) 异常的声明 { int Value=1; 异常的声明 compute(Value); Value=20; compute(Value); } static void compute(int a) throws Exception { if(a >10) throw new Exception(); System.out.println("Normal Exit"); } } //异常的继续声明
第 七 章 Java中的异常(例外) Java中的异常(例外)
7.3 自定义异常类的使用
• 注意 : 声明自己的异常类的主要目的是为应用程序中 注意: 特定错误提供相应的错误提示 信息,而不便采用标准 的错误信息(扩充 扩充Java系统中的异常类 系统中的异常类)。 扩充 系统中的异常类 • 编程要求: 编程要求: • ( (1)声明一个新的异常类,该异常类必须从Java已 有定义的异常类继承,如Exception、IOException等 • (2)为新的异常类定义属性和方法,或重载父类的属 性和方法,使这些属性和方法能够体现该类所对应的 错误的信息。

时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的Java程序 也将退出。
第 七 章 Java中的异常(例外) Java中的异常(例外)
• 异常处理机制执行过程: • 出现异常事件时,Java系统自动产生一个异常 对象,然后将这个对象传递给Java运行时系统,这个 例外产生和提交的过程称为抛出(throw)异常 ( Exception );当Java运行时系统得到例外对象以 后,它将会寻找处理这一例外的代码,找到能处理这 一例外的方法以后,运行时系统把当前例外对象交给 这个方法进行处理,这一过程称为捕获(catch)异 常( Exception ) 。
第 七 章 Java中的异常(例外) Java中的异常(例外)
2、声明所抛出的异常
• 声明抛出异常 如果在一个方法中生成了一个异常,但是这一方法 并不确切地知道该如何对这一异常事件进行处理,这时, 一个方法就应该声明抛弃异常,使得异常对象可以从调 用栈向后传播,直到有合适的方法捕获它为止。 声明抛弃异常是在一个方法声明中的throws子句中 指明的。
Байду номын сангаас第 七 章 Java中的异常(例外) Java中的异常(例外)
• 7.1 什么是异常 • 7.2 异常的处理 • 7.3 自定义异常类的使用
第 七 章 Java中的异常(例外) Java中的异常(例外)
7.1 什么是异常
含义: 含义:异常(Exception)是程序在运行过程中所发生的非正 常事件(而这些错误在设计时不能准确地识别出但又可 能会发生或者不会发生。
• (3)使用throw语句直接抛出异常或使用throws语句 间接抛出异常。(这可通过throws语句来声明所抛出的 异常 )
• 如果一个方法并不知道如何处理所出现的异常,则可在方法声明时,声明抛弃 (throws)异常。这是一种消极的异常处理机制。

第 七 章 Java中的异常(例外) Java中的异常(例外)
它指定可能会产生异常的语句 1 、try~catch~finally语句 范围,也即为catch规定异常 • 语法结构: 捕获的语句范围。 它指明需要捕获异常事件的类型并相 • try
• • • • • • • • • • { 可能产生异常的语句块;; 应地给出处理的方法(代码)。 } catch(异常类名1 对象名1) { 处理语句组1; } catch(异常类名2 对象名2) { 处理语句组2; } …… 它指定一代码块,不管是否有异常产生或 finally 是否捕获住该异常,程序都从此处继续向 { 后执行。从而达到提供统一的出口(如关 最终处理语句; 闭文件、清除系统资等)。 }
第 七 章 Java中的异常(例外) Java中的异常(例外)
class MyException extends Exception { //自定义异常 public MyException() {} public MyException(String msg) { super(msg); } }
非正常事件即各种意外情况。比如说: ① 用户输入出错 ② 所需文件找不到 ③ 运行时磁盘空间不够 ④ 内存不够 ⑤ 算术运算错 (数的溢出,被零除…) ⑥ 数组下标越界 当Java程序出现以上的错误时,就会在所处的方法中产生一个异常对 象。这个异常对象包括错误的类型,错误出现时程序的运行状态以 及对该错误的详细描述。
……
第 七 章 Java中的异常(例外) Java中的异常(例外)
• import java.io.*; • class ExceptionDemo • { • public static void main(String args[]) • { FileInputStream fis=new FileInputStream(“text”); • int b; • while((b=fis.read())!= -1) • { System.out.println(b); • } • fis.close(); • } • }
第 七 章 Java中的异常(例外) Java中的异常(例外)
2、异常处理机制
Java的异常处理机制:抛出异常并捕获异常。 的异常处理机制: 的异常处理机制 • 1.抛出异常:当程序中产生异常时,运行 抛出异常: 抛出异常 系统将抛出异常类对象(它代表某一异常类 型的错误)。 • 2.捕获异常:用户程序或运行系统可以捕获 捕获异常: 捕获异常 该异常类对象(在函数的调用栈中查找能处 理此异常事件的程序为止)并相应地给出处 理的方法(代码)。这是积极的异常处理机制。如果Java运行
第 七 章 Java中的异常(例外) Java中的异常(例外)
• 2.程序设计中的三种错误 程序设计中的三种错误---语法错误(编译 程序设计中的三种错误 时的错误)、逻辑错误(运行时的错误)、 异常错误(运行时的错误)。 • 3.异常错误的特点:程序在运行过程中所发 .异常错误的特点: 生的错误事件;程序员在编程时无法预知它 是否会产生;产生与否取决于用户当时的执 行环境。
第 七 章 Java中的异常(例外) Java中的异常(例外)
• 多catch语句块编程要点: • ① c a t c h 语 句 的 顺 序 : 捕获异常的顺序和catch语句的顺序有关,当捕获 到一个异常时,剩下的catch语句就不再进行匹配。因 此,在安排catch语句的顺序时,首先应该捕获最特殊 的异常,然后再逐渐一般化。也就是一般先安排子类, 再安排父类。 • ② try 与catch之间不能有其他语句(不能隔断)。 • try • { } • int x=1; • catch(Exception e) • { }
第 七 章 Java中的异常(例外) Java中的异常(例外)
7.2异常处理
• (1)由系统自动处理。 • (2)通过 、catch、finally语句块,捕获住该异 通过try、 语句块, 通过 、 语句块 Java 常 。这是积极的异常处理机制。如果Java运行时系统找不到可以捕获异常的方
法,则运行时系统将终止,相应的Java程序也将退
异常的抛 出
第 七 章 Java中的异常(例外) Java中的异常(例外)
3、声明和抛出异常 声明和抛出异常
• 1.异常声明:在可能会出现异常的函数声明中给出异 异常声明: 异常声明 常定义。 • 定义的格式: • 返回类型 函数名(形参定义)throws 定义的异 常事件类型列表(类名) • { 函数体定义; • } • 注 : 当某一个函数本身不处理某些异常时,也可 在定义该函数时可预先说明(声明)该函数不处理 的异常类型。
相关文档
最新文档