第06章-异常处理

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

17
异常处理
异常的抛出 主动抛出异常
使用throw语句抛出异常时应注意如下两个问题: (1)void parseObj(String s) throws NullPointerException { 一般这种抛出异常的语句应该被定义为在满足一 if (s == null) 定条件时执行,例如把throw语句放在if语句的if throw new NullPointerException(); 分支中,只有当if条件得到满足,即用户定义的逻 … …; 辑错误发生时才执行。 (2)} 含有throw语句的方法,应该在方法头定义中增加 如下部分: throws 异常类名列表
14
异常处理

{ java.io.IOException; try try语句块定义了异常处理器的范围 import catch语句块捕捉try语句块抛出的异常
异常处理器(exception handler)
class Test { ... try { } catch (ArrayIndexOutOfBoundsException e) { public static void main(String args[]) { // Code that might generate exceptions System.out.println(e); try { } catch(Type1 id1) { }// Handle exceptions of Type1 catch (IOException e) { char c = (char)System.in.read(); System.out.println(e); System.out.println(c); } catch(Type2 id2) { }// Handle exceptions of Type2 } catch (IOException e) { System.out.println(e); } catch(Type3 id3) { // Handle exceptions of Type3 } } } // etc ... }
11
异常处理
由于非预期的结果导致系统运行时产生异

class jex7_9 { class jex7_9 { public static void main(String args[]) { public static void main(String args[]) { int a = Integer.parseInt(args[0]); int i 0; int b = 24/a; System.out.println(i); } } } } java jex7_9 a java jex7_9 Exception in thread "main“ Exception in thread "main“ java.lang.ArithmeticException: / by zero input 0 java.lang.NumberFormatException: For java.lang.ArrayIndexOutOfBoundsException: string: “a”
15
异常处理

try { // The guarded region: Dangerous activities // that might throw A, B, or C 异常处理器(exception handler) } catch(A a1) { finally语句块 // Handler for situation A finally语句块在异常处理中是必须执行的语句块 } catch(B b1) { 清理现场 // Handler for situation B } catch(C 关闭打开的文件 c1) { // Handler for situation C 关闭网络连接 } finally { // Activities that happen every time }
16
异常处理
import java.io.IOException; 异常的抛出 class Test { 在一个方法中,抛出异常,同时捕捉 IOException { static char getChar() throws char c = (char)System.in.read(); 当有多个方法调用时,由特定(适当)的方法 return c; 捕捉异常 } 被调用的方法主动抛出异常(throws) public static void main(String args[]) { try { char c = getChar(); System.out.println(c); } catch (IOException e) { System.out.println(e); } } }
类的对象 一个异常类代表一种异常事件 Java语言利用异常来使程序获得处理错误 的能力(error-handling)
异常事件(Exceptional Event)
程序的运行过程中所发生的错误,它中断指令 的正常执行。
5
异常类
Java语言中用来处理异常的类
异常类的方法 构造方法 public Exception() public Exception(String s) 常用方法 public String toString() public String getMessage() public void printStackTrace()
3
异常(Exception)
class ExceptionDemo2{ public static void main( String args[ ] ){ int a = 0; System.out.println( 5/a ); } }
4
异常:Java中处理错误的类
Java语言中已定义或用户定义的某个异常
2
异常(Exception)
import java.io.*; class ExceptionDemo1{ public static void main( String args[ ] ){ FileInputStream fis = new FileInputStream( “text” ); int b; while( (b=fis.read())!=-1 ){ System.out.print( b ); } fis.close( ); } }
9
异常处理
异常处理器(exception handler)
try catch finally
异常的抛出(throw)
10
异常处理
在程序编译的时候必须完成异常的处理 何时会出现异常? abstract int read() throws public方法中已定义了异常的抛出IOException import java.io.IOException; class jex3_3 { public static void main(String args[]) throws IOException { char c; System.out.println("Please input a char: "); c = (char)System.in.read(); System.out.println("Received char=" + c); } }
12
异常处理
异常处理器(exception handler)
try catch finally
13
ቤተ መጻሕፍቲ ባይዱ
一个try语句必须带有至少一个catch语句块 未报告的异常 java.io.IOException; 或一个finally语句块 必须对其进行捕捉或声明以便抛出 char c = (char)System.in.read(); 异常处理器(exception handler)
6
class java.lang.Throwable class java.lang.Error (严重的问题,但不需程序捕捉的错误) class java.lang.LinkageError ... ... 对异常的定义 class java.lang.VirtualMachineError Java语言中定义的异常类: class java.lang.InternalError IOException/NullPointerException class java.lang.OutOfMemoryError 详细定义见Java文档中各个包的Exception ... ... Summary class java.lang.Exception(程序应该捕捉的错误) 用户定义自已所需的异常类,描述程序中出现 class java.lang.ClassNotFoundException 的异常结果 class java.lang.RuntimeException (JVM正常运行时抛出的错误) class java.lang.ArithmeticException ... ... class java.io.IOException class java.awt.AWTException class java.sql.SQLException 7 ... ...
异常(Exception)
第六章 异常处理
1. 异常和异常类
2. 异常处理
3. 创建异常
8
异常处理机制

当一个Java程序的方法产生一个错误,该方法创 造一个异常对象并将其交给运行系统 将生成的异常对象传递给Java运行时系统,这 一异常的产生和提交过程称为抛出(throw)异常, 如果一个方法并不知道如何处理所出现的异常, 则可在方法声明时,声明抛弃(throws)异常, 消极处理机制; 当Java运行时系统得到一个异常对象时,它 将会沿着方法的调用栈逐层回溯,寻找处理这 一异常的代码。找到能够处理这种类型的异常 的方法后,运行时系统把当前异常对象交给这 个方法进行处理,这一过程称为捕获异常 (catch the exception),积极处理机制 。
18
异常处理
多异常的处理
catch块接收try块可能产生的异常,一个
catch语句块通常会用同种方式来处理它所 接收到的所有异常; 一个try块可能产生多种不同的异常,如果 希望能采取不同的方法来处理这些异常,就 需要使用多异常处理机制。
第六章 异常处理
1. 异常和异常类
2. 异常处理
3. 创建异常
1
异常(Exception)
软件程序肯定会发生错误/问题 如何处理错误?把错误交给谁去处理?程序如 何从错误中恢复? 从外部问题(硬盘、网络故障等)到编程错误(数 组越界、引用空对象等) 致命错误 内存空间不足等错误(Error)导致程序异常中断 程序不能简单地恢复执行 非致命错误 数组越界等异常(Exception)导致程序中断执行 程序在修正后可恢复执行
异常(Exception)
try程序块 java.io.IOException; class Test { import 构造一个异常处理器,封装一些抛出异常的语句 public static void main(String args[]) { class Test { char (char)System.in.read(); try { c =public static void main(String args[]) { Java 语句块; //指一个或多个抛出异常的Java语句 System.out.println(c); try { } char c = (char)System.in.read(); } } System.out.println(c); } catch (IOException e) { System.out.println(e); } } }
相关文档
最新文档