第八课异常.ppt
文本预览下载声明
第八课:异常 周甫 zoofchow@ 学习目标 学习目标 1 什么是异常 在Java编程语言中,异常类定义程序中可能遇到的轻微的错误条件。你可以写代码来处理异常,并继续执行程序,而不需要让程序中止。 在程序执行中,任何中断正常程序流程的条件都是异常。例如,发生下列情况时,会出现异常: 想打开的文件不存在 网络连接中断 操作数超出预定范围 非常感兴趣地正在装载的类文件丢失 1 什么是异常(续一) 在Java编程语言中,错误类定义被认为是不能恢复的严重错误条件。在大多数情况下,当遇到这样的错误时,建议让程序中断。 2 异常的分类 在Java编程语言中,异常有三种分类。Java.lang.Throwable类充当所有对象的父类,可以使用异常处理机制将这些对象抛出并捕获。在Throwable类中定义方法来检索与异常相关的错误信息,并打印显示异常发生的栈跟踪信息。它有Error和Exception两个基本子类。 2 异常的分类(续一) Throwable类不能使用,而使用子类异常中的一个来描述任何特殊异常。 3 公共异常 Java编程语言提供几种预定义的异常。下面是可能遇到的更具共同性的异常中的几种: ArithmeticException:整数被0除,运算得出的结果。 int i = 12 / 0; NullPointerException:当对象没被实例化时,访问对象的属性或方法 的尝试: Date d = null; System.out.println(d.toString()); NegativeArraySizeException:创建带负维数大小的数组的尝试。 ArrayIndexOutOfBoundsException:访问超过数组大小范围的一个元素的尝试。 SecurityException:典型地被抛出到浏览器中,SecurityManager类将抛出applets的一个异常,该异常企图做下述工作(除非明显地得到允许): 访问一个本地文件. 打开主机的一个socket,这个主机与服务于applet的主机不是同一个。 在运行时环境中执行另一个程序. 4 异常处理 捕获异常 -- 积极处理方式: try-catch-finally 声明异常 -- 消极处理方式: Throws 引入异常 – 简单处理方式: throw 4 异常处理(续一) 用try-catch-finally块来处理异常 处理步骤: 将不安全的代码放到try block。 对捕获到的异常的处理代码放到相应catch block。 无论异常发生与否都要执行的代码放到finally block。唯一不被执行的情况是调用了System.exit() catch和finally块不一定要求同时出现。 一个try块可以有多个catch块。 一个catch块只能捕获一个异常。 4 异常处理(续二) 用throws子句上抛异常 通过关键字throws在方法签名中声明上抛异常而不是处理它。 调用它的方法应该处理抛出的异常,否则继续上抛,只到被处理为止。 关键字throws之后是所有异常的列表,使用逗号分开 各异常类型。 实例分析 1 问题的描述: 写一个常见的异常 解决方案: String ss[] ={ Hello world!, 您好,世界!, HELLO WORLD!! }; for(int i = 0 ; i 6 ; i++) { System.out.println (ss[i]); } 实例分析 2 问题的描述: 对前例的异常进行处理 解决方案: 要处理异常,将能够抛出异常的代码放入try块中,然后创建相应的catch块的列表,每个可能被抛出异常都有一个。如果生成的异常与catch中提到的相匹配,那么catch条件的块语句就被执行。在try块之后,可能有许多catch块,每一个都处理不同的异常。 实例分析 2(续一) 代码片断 try { System.out.println(ss[i]); } catch(Exception e) { System.out.println(数组越界); } finally { System.out.println(finally execute); } 总结:从上例可以看出:不管出现不出现异常,finally语句块都会执行。在try语句块里除了System.exit(int)语句外,finally语句块必须执行。 课堂练习 有以下代码,分别以三种方式处理异常 int a = 10; for(int i = 10; i = 0; i -
显示全部