异常和断言课件_第1页
异常和断言课件_第2页
异常和断言课件_第3页
异常和断言课件_第4页
异常和断言课件_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、学习目标理解异常和异常处理区别异常的类型: Error (严重的) vs. Exception (不严重的), 必检异常和免检异常在方法头中声明异常在方法中抛出异常使用 try-catch 块处理异常解释异常的传播finally 子句声明断言学习目标理解异常和异常处理三类错误语法错误 syntax errors运行错误runtime errors逻辑错误logic errors.三类错误语法错误 syntax errors运行错误 import javax.swing.JOptionPane; public class Test public static void main(String a

2、rgs) String input = JOptionPane.showInputDialog(null, Please enter an integer); int number = Integer.parseInt(input); / Display the result JOptionPane.showMessageDialog(null, The number entered is + number); System.exit(0); 跳过其余行,程序终止. 运行错误 import javax.swing.JOpti捕捉运行错误 import javax.swing.JOptionPa

3、ne; public class Test public static void main(String args) try String input = JOptionPane.showInputDialog(null, Please enter an integer); int number = Integer.parseInt(input); / Display the result JOptionPane.showMessageDialog(null, The number entered is + number); catch (Exception ex) JOptionPane.s

4、howMessageDialog(null, Incorrect input: an integer is required); System.out.println(Execution continues .); System.exit(0); - 捕捉运行错误 import javax.swing.JOp异常类异常类系统错误系统错误是由 JVM抛出并在Error类中描述的。Error类描述内部的系统错误。如果发生,除了通知用户尽量稳妥的结束程序外,几乎什么也不能做。系统错误系统错误是由 JVM抛出并在Error类中描述的。E异常异常是由Exceptions 类描述的。 Exceptions

5、 类描述由程序和外部环境引起的错误,这些错误能通过程序捕获和处理。异常异常是由Exceptions 类描述的。 Excepti运行异常运行错误由 RuntimeException 类描述的,编程错误如不合适的转换、访问一个越界数组或数值错误等。运行异常运行错误由 RuntimeException 类描述必检异常和免检异常RuntimeException, Error 以及它们的子类都称为免检异常 unchecked exceptions。免检异常反映程序中不可重获的逻辑错误。 所有的其他异常都称为必检异常 checked exceptions, 意思是指编译器会强制程序员检查并处理它们。必检异

6、常和免检异常RuntimeException, Err必检异常和免检异常免检异常必检异常和免检异常免检异常理解异常处理 method1() try invoke method2; catch (Exception ex) Process exception; method2() throws Exception if (an error occurs) throw new Exception(); 捕获异常 抛出异常 声明异常理解异常处理 method1() try 声明异常Throws可以声明异常:public void myMethod() throws IOExceptionpublic

7、 void myMethod() throws IOException, OtherException声明异常Throws可以声明异常:抛出异常当程序检查到一个错误后,创建一个适当类型异常的实例并抛出它,称为抛出异常。抛出异常使用throw throw new TheException(); TheException ex = new TheException();throw ex;抛出异常当程序检查到一个错误后,创建一个适当类型异常的实例并抛出异常举例 /* Set a new radius */ public void setRadius(double newRadius) throws

8、IllegalArgumentException if (newRadius = 0) radius = newRadius; else throw new IllegalArgumentException( Radius cannot be negative); 抛出异常举例 /* Set a new radius */捕获异常try statements; / Statements that may throw exceptionscatch (Exception1 exVar1) handler for exception1;catch (Exception2 exVar2) handl

9、er for exception2;.catch (ExceptionN exVar3) handler for exceptionN; 捕获异常try 捕获异常 main method . try . invoke method1; statement1; catch (Exception1 ex1) Process ex1; statement2; method1 . try . invoke method2; statement3; catch (Exception2 ex2) Process ex2; statement4; method2 . try . invoke method3

10、; statement5; catch (Exception3 ex3) Process ex3; statement6; method3抛出一个异常捕获异常 main method . try注从一个通用父类可以派生出多种异常类。在catch子句中指定异常的顺序是非常重要的。如果父类的catch子句出现在子类的catch子句之前,就会导致编译错误。Java强迫程序员处理必检异常。注从一个通用父类可以派生出多种异常类。Example 声明、抛出和捕获异常问题:演示声明、抛出和捕获异常。改写6.10节中的setRadius 方法。TestCircleWithExceptionRunCircleW

11、ithExceptionExample 声明、抛出和捕获异常问题:演示声明、抛出和捕Example GUI 程序中的异常GUI程序出现异常,在控制台上输出错误信息,用户界面处理可以继续进行。编写程序,创建一个用户界面进行整数除法。IntegerDivisionRunExample GUI 程序中的异常GUI程序出现异常,在控重新抛出异常try statements;catch(TheException ex) perform operations before exits; throw ex;重新抛出异常try finally 子句try statements;catch(TheExcepti

12、on e) handling e; finally finalStatements; finally 子句try 何时使用异常一个方法出现异常时,如果想让该方法的调用者处理异常,应该创建一个异常对象并抛出。如果能在发生异常的方法中处理异常,那么就不需要抛出异常。一般来说,项目中多个类上发生的共同异常,应该考虑作为异常类处理。发生在个别方法中的简单错误最好进行局部处理,不要抛出异常。何时使用异常一个方法出现异常时,如果想让该方法的调用者处理异何时使用异常当必须处理不可预料的错误时,应该使用try catch块。简单的、可预料的不要使用。 try System.out.println(refVar

13、.toString();catch (NullPointerException ex) System.out.println(refVar is null);if (refVar != null) System.out.println(refVar.toString();else System.out.println(refVar is null);最好替换为:何时使用异常当必须处理不可预料的错误时,应该使用try c用户自定义的异常系统定义的异常主要用来处理系统可以预见的较为常见的运行错误,对于某个应用所特有的运行错误,需要自己创建用户自定义的异常类,用于处理用户程序中特定的逻辑运行错误。例

14、:方法void ccs(int i) if(i10)throw (new MyException(i);elseSystem.out.println(ccs is: +i); 主程序中加入:tryccs(1);ccs(5);ccs(20);ccs(30);catch(MyException e)System.out.println(Exception is: +e.toString(); 可见,catch语句应跟在try语句后,当try中的语句在执行时产生一个异常后,被启动的异常处理会自动捕捉,并跳到catch语句去执行。public static void ccs(int i)创建系统异常类

15、RunRadiusException可以通过扩展Exception类或其子类来创建自己的异常类。CircleWithRadiusExceptionTestCircleWithRadiusException创建系统异常类RunRadiusException可以通过扩断言断言 assertion 是java的语句,它允许对程序提出一个判断(假设)。断言包含一个布尔表达式,在程序运行中,它应该是真。断言用于确保程序的正确性,避免逻辑错误。断言断言 assertion 是java的语句,它允许对程序断言assert 声明断言:assert assertion; assert assertion : detailMessage;assertion是一个布尔表达式detailMessage 是一个基本类型值或一个对象值。 断言assert 声明断言:执行断言示例public class AssertionDemo public static void main(String args) int i; int sum = 0; for (i = 0; i 10 & sum 5 * 10 : sum is + sum; 执行断言示例public class AssertionDe运行带断言的程序默认情况下断言不起作用。为使它们有效,使用开关enableassertions, 或 ea

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论