AvA Java例处理(2) 辽宁经济职业技术学院信息系 硕士、副教授陈英 JAVA
Java例外处理(2) 辽宁经济职业技术学院信息系 硕士、副教授 陈英
影定义自已的异常 ○定义自己的异常有两个基本的原因 1)希望当一个标准异常出现时添加信息,并 且可以通过再次抛出你自己的异常来做到 这一点 )你的代码中可以有一些出错条件,以保证 区分出某种特定的类 °但值{注意的是,她出导常会带来大量 的代码代替正常的异常处理代码 JAVA
定义自己的异常 定义自己的异常有两个基本的原因: 1) 希望当一个标准异常出现时添加信息,并 且可以通过再次抛出你自己的异常来做到 这一点。 2) 你的代码中可以有一些出错条件,以保证 区分出某种特定的类。 但值得注意的是,抛出异常会带来大量 的处理负担,因此不应该经常想用自己 的代码代替正常的异常处理代码
定以自己的异常 AvA o用户定义异常是通过扩展 Exception类来创建的。 这种异常类可以包含一个“普通”类所包含的 任何东西。 不是由Java系统监测到的异常(下标越界,被0-除 等)而是由用户自己定义的异常。 须由用户自己抛出 hrow new MyExceptiog终 o用户定义的异常同样要用try- catch捕获, 异常是一个类,用户定义的异常必须继承自 Throwable或 Exception类,建议用 Exception类。 o 15: class MyException extends Exception …}; JAVA
用户定义异常是通过扩展Exception类来创建的。 这种异常类可以包含一个“普通”类所包含的 任何东西。 不是由Java系统监测到的异常(下标越界,被0-除 等),而是由用户自己定义的异常。 用户定义的异常同样要用try--catch捕获,但必 须由用户自己抛出 throw new MyException。 异常是一个类,用户定义的异常必须继承自 Throwable或Exception类,建议用Exception类。 例:class MyException extends Exception {….}; 定义自己的异常
影定义一个异常类 自定义的异常类必须以 THrowable作为超类, 否则它们将不能定义一个异常。 虽然可以从任何标准异常派生出自已的类, 取 好的策略是从 Exception类派生 ○按上述作法,编译器可以跟踪记录程序中的 这个异常会在何处抛出,并且检查它们要么 被捕获,要么其抛出在一个方法中被声明。 如果使用 Runtime Excption或者其它的一个子 类,则编译器对异常类的 catch块的检查将会 受到抑制。 JAVA
定义一个异常类 自定义的异常类必须以 Throwable作为超类, 否则它们将不能定义一个异常。 虽然可以从任何标准异常派生出自已的类, 但最好的策略是从Exception类派生。 按上述作法,编译器可以跟踪记录程序中的 这个异常会在何处抛出,并且检查它们要么 被捕获,要么其抛出在一个方法中被声明。 如果使用RuntimeExcption或者其它的一个子 类,则编译器对异常类的catch块的检查将会 受到抑制
AvA 定义一个异常类 public class DreadfuiProblem Exception extends Exception i public DreadfulProblem Exception(f // Default constructor public DreadfulProblem Exception(String s)t super(s); // Call the base class constructor 自定义异常应该包括一个默认构造器和一个接受一个 String对象作为参数的构造器。存储在超类 Exception中的 消息将自动使用自定义的类名被初始化。 传递给第二个构造器的 String参数将被追加到类名的后面, 以形成存储在异常对象中的消息。 JAVA
定义一个异常类 public class DreadfulProblemException extends Exception { public DreadfulProblemException(){ } // Default constructor public DreadfulProblemException(String s) { super(s); // Call the base class constructor }} 自定义异常应该包括一个默认构造器和一个接受一个 String对象作为参数的构造器。存储在超类Exception中的 消息将自动使用自定义的类名被初始化。 传递给第二个构造器的String参数将被追加到类名的后面, 以形成存储在异常对象中的消息
AvA 抛出自己的异常 o使用一个由关键字 throw后面跟随着一个异常对 象的语句来抛出一个异常 ○例: DreadfulProblemException e=new DreadfulProblem o; Throw eg ○这时该方法会停止执行,除非上述代码段位于 个ry或者 catch块并且带有相关的 finally子句,这 个子句中包含着将在该方法结束前执行的语句 o在调用该方法的程序中,调用这个方法的位置将 抛出异常。 JAVA
抛出自己的异常 使用一个由关键字throw后面跟随着一个异常对 象的语句来抛出一个异常。 例: DreadfulProblemException e = new DreadfulProblemException(); Throw e; 这时该方法会停止执行,除非上述代码段位于一 个try或者catch块并且带有相关的finally子句,这 个子句中包含着将在该方法结束前执行的语句。 在调用该方法的程序中,调用这个方法的位置将 抛出异常
AvA 异常处理策略 首先应该考虑的是通过程序中的异常处理代 码可以达到什么目的。虽然没有一层不变的 规则,但一般希望能够更正一个问题并且使 程序像什么也没有发生那样继续运行下去。 ◎而在有些情况下,可能最好的做法是输出一 条出错消息并且尽快退出。 快速退出可以通过调用 System类中的ex0实 现。 JAVA
异常处理策略 首先应该考虑的是通过程序中的异常处理代 码可以达到什么目的。虽然没有一层不变的 规则,但一般希望能够更正一个问题并且使 程序像什么也没有发生那样继续运行下去。 而在有些情况下,可能最好的做法是输出一 条出错消息并且尽快退出。 快速退出可以通过调用System类中的exit()实 现
AvA 小结 ○异常指出了你的程序中出现的错误。 o异常是 Throwable类的子类对象。 o Java包含了一组可以由于你的程序代码出错而 自动抛出的标准异常,他们也可以由Java中的 标准类抛出。 ○如果一个方法抛出的异常没有被捕获,并且也 没有被Eror类或者 Runtime Exception的子类表 示出,那么你必须在该方法的定义中用 throws 子句把这种异常类指出 异常可以人为地抛出,用thr row new 语句 JAVA
小结 异常指出了你的程序中出现的错误。 异常是Throwable类的子类对象。 Java包含了一组可以由于你的程序代码出错而 自动抛出的标准异常,他们也可以由Java中的 标准类抛出。 如果一个方法抛出的异常没有被捕获,并且也 没有被Error类或者RuntimeException的子类表 示出,那么你必须在该方法的定义中用throws 子句把这种异常类指出。 异常可以人为地抛出,用throw new 语句
小结 AvA 如果你想在一个方法中处理一个异常,就必 须把可能生成该异常的代码放在一个try代码 块中。一个方法可以有多个ry代码块。 异常处理代码位于一个 catch块中,这个块紧 跟着包含可能抛出该异常的try块之后。一个 try块可以有多个 catch块来处理不同类型的异 常。 O Finally块用于包含必须在ry块执行之后执行 的代码,而不论try块的执行是如何结束的。 Finallyi块总是在方法结束之前执行。 JAVA
小结 如果你想在一个方法中处理一个异常,就必 须把可能生成该异常的代码放在一个try代码 块中。一个方法可以有多个try代码块。 异常处理代码位于一个catch块中,这个块紧 跟着包含可能抛出该异常的try块之后。一个 try块可以有多个catch块来处理不同类型的异 常。 Finally块用于包含必须在try块执行之后执行 的代码,而不论try块的执行是如何结束的。 Finally块总是在方法结束之前执行
小结 AvA o你可以使用 throw语句在一个方法中的任 何位置抛出一个异常。你可以在一个 catch块中再次抛出一个已有的异常,以 便把它传递到调用的方法 ○异常可以是系统已经定义好的也可以是 用户自己定义的。 用户自己定义的异常一定继承自 Throwable或 Exception类 你可以定义自己的异常类,它们一般由 Exception类派生而得。 JAVA
小结 你可以使用throw语句在一个方法中的任 何位置抛出一个异常。你可以在一个 catch块中再次抛出一个已有的异常,以 便把它传递到调用的方法。 异常可以是系统已经定义好的,也可以是 用户自己定义的。 用户自己定义的异常一定继承自 Throwable或Exception类 你可以定义自己的异常类,它们一般由 Exception类派生而得