10 Java高级编程 Application Program 的A
10-1 Programming in Java Java 高级编程 Lecture10 JOHN DOE'S DISK MYFILE.DAT Application Program
淡肉 10-2 .Java异常处理 ·Java多线程编程 ·Java的/O编程 ·Java的网络编程
10-2 Programming in Java 提纲 • Java异常处理 • Java多线程编程 • Java 的I/O编程 • Java的网络编程
.Java异常 >是特殊的运行错误对象,对应着Java语言特定的运行错 误处理机制 ,Java异常类 >每个异常类都代表了一种运行错误,类中包含了该运行 错误的信息和处理错误的方法等内容 .Java异常机制 >每当Java程序运行过程中发生一个可识别的运行错误时 系统会产生一个相应的异常类的对象,即产生一个异 常。系统中就一定有相应的机制来处理它,从而保证整 个程序运行的安全性
10-3 Programming in Java 异常与异常类 • Java异常 ¾是特殊的运行错误对象,对应着Java语言特定的运行错 误处理机制 • Java异常类 ¾每个异常类都代表了一种运行错误,类中包含了该运行 错误的信息和处理错误的方法等内容 • Java异常机制 ¾每当Java 程序运行过程中发生一个可识别的运行错误时 ,系统会产生一个相应的异常类的对象,即产生一个异 常。系统中就一定有相应的机制来处理它,从而保证整 个程序运行的安全性
开第 10-4 Object Only Recoverable R can be thrown Non-recoverable Throwable Recoverable Requires Error Try/catch NOT Required Exception Try/catch OutOfMe Runtime Add your Exception Exceptions moryError here Checked Unchecked Exception Exception Array NullPointer Index Exception Out Of Bounds Exception
10-4 Programming in Java 异常类 Object Throwable Error … Exception Runtime Exception … … Add your Exceptions here Only Recoverable can be thrown Non-recoverable Recoverable Requires Try/catch NOT Try/catch Required Array Index Out Of Bounds Exception NullPointer Exception Unchecked Exception Checked Exception OutOfMe moryError
·系统定义的运行异常:P250 >系统定义的异常主要用来处理系统可预见的较常见的运 行错误 >Exception类的若干子类,每个子类代表了一种特定的运 行错误 ·用户自定义的异常:P251 >用户定义的异常主要用来处理用户程序中特定的逻辑运 行错误 >声明一个新的异常类,扩展Exception类(直接或间接) >为新的异常类定义属性或方法,或重载父类的属性和方 法,使这些属性或方法能够体现该类所对应的错误的信息
10-5 Programming in Java 异常类类型 • 用户自定义的异常: P251 ¾用户定义的异常主要用来处理用户程序中特定的逻辑运 行错误 ¾声明一个新的异常类,扩展Exception类 (直接或间接) ¾为新的异常类定义属性或方法,或重载父类的属性和方 法,使这些属性或方法能够体现该类所对应的错误的信息 • 系统定义的运行异常: P250 ¾系统定义的异常主要用来处理系统可预见的较常见的运 行错误 ¾Exception类的若干子类,每个子类代表了一种特定的运 行错误
0-6 class Worker{/定义一个可以抛出Exceptl,.Except2异常的方法 public void fl(int val)throws Except1,Except2{ switch (val){ casel:throw new Exceptl("Gotcha!"); case2:throw new Except2(“Againnn”);} class Except1 extends Exception{/定义Exceptl异常 private String theMessage; public Except1(String aMsg){ theMessage aMsg; public String toString(){ return“Except1”+theMessage;}
10-6 Programming in Java class Worker {//定义一个可以抛出Except1, Except2 异常的方法 public void f1(int val) throws Except1, Except2 { switch (val) { case1: throw new Except1(“Gotcha!”); case2: throw new Except2(“Againnn”); } } } class Except1 extends Exception {//定义Except1异常 private String theMessage; public Except1(String aMsg) { theMessage = aMsg; } public String toString() { return “Except1” + theMessage; } 示例(1)
冈下州 10- class Except2 extends Exception{/定义Except22异常 private String the Message; public Except2(String aMsg){ theMessage aMsg; public String toString(){ return“Except22”+theMessage;}
10-7 Programming in Java class Except2 extends Exception {//定义Except2异常 private String theMessage; public Except2(String aMsg) { theMessage = aMsg; } public String toString() { return “Except2” + theMessage; } 示例(2)
下⊙ 10-8 public class except_example public static void main(Sting args[]){ Worker dobj new WorkerO; for (inti=0;i<3;++){ try{/异常处理模块 dobj.f1(① System.out.println("No except,"+i);} catch(Except1e){U/捕捉Exceptl:异常 System.out.println(e.toString+i); catch(Except2e){U/捕捉Except2异常 System.out.println(e.toString()+i); finally System.out.println("Finally code");
10-8 Programming in Java public class except_example { public static void main(Sting args[]) { Worker dobj = new Worker(); for (int i = 0; i < 3; i++) { try { //异常处理模块 dobj.f1(I); System.out.println(“No except,” + i); } catch (Except1 e) {//捕捉Except1异常 System.out.println(e.toString() + i); } catch (Except2 e) {//捕捉Except2异常 System.out.println(e.toString() + i); } finally { System.out.println(“Finally code”); } } } } 示例(3)
Java程序在运行时如果引发了一个可识别的错误, 就会产生一个与该错误相对应的异常类的对象,这个 过程被称为异常的抛出 ·系统自动抛出的异常:P252 >系统定义的异常主要用来处理系统可预见的较常见的运 行错误 Public class TestsystemException public static void main(String args [] { int a=0,b=5; System.out.println (b/a); }//throw an ArithmeticException object
10-9 Programming in Java 抛出异常(1) • Java程序在运行时如果引发了一个可识别的错误, 就会产生一个与该错误相对应的异常类的对象,这个 过程被称为异常的抛出 • 系统自动抛出的异常: P252 ¾系统定义的异常主要用来处理系统可预见的较常见的运 行错误 Public class TestsystemException { public static void main(String args[]) { int a=0, b=5; System.out.println(b/a); } }//throw an ArithmeticException object
.语句抛出的异常:P253 修饰符返回类型方法名(参数列表)throws异常类名列表 {.how异常类名.…} int dequeue()throws EmptyQueueException int data; if (isEmpty()) throw(new EmptyQueueException(this)); else data=m FirstNode.getData(; m FirstNode m FirstNode.getNextO; return data;}
10-10 Programming in Java 抛出异常(2) • 语句抛出的异常: P253 修饰符 返回类型 方法名(参数列表)throws 异常类名列表 { … throw 异常类名 … } int dequeue() throws EmptyQueueException { int data; if (isEmpty()) throw (new EmptyQueueException(this)); else { data=m_FirstNode.getData(); m_FirstNode = m_FirstNode.getNext(); return data;}