第七章异常(xception)处理.ppt
文本预览下载声明
自定义异常 通过继承java.lang.Exception类声明自己的异常类。 在方法适当的位置生成自定义异常的实例,并用throw抛出。 在方法的声明部分用throws声明该方法可能抛出的异常。 * 第七章 异常(Exception)处理 异常 运行期出现的错误 代码 public class HelloWorld { public static void main (String args[]) { int i = 0; String greetings [] = { Hello!,No,WORLD!}; while (i 4) { System.out.println (greetings[i]); i++; } } } 正常与异常 正常与异常之比可达30% 比 70% 打开文件 文件不存在? 文件打不开? 读取文件 没有足够可读内容? 权限不允许读 写文件 磁盘满 网络断线 关闭文件 异常机制简介 在进行程序设计时,错误的产生是不可避免的,如何处理错误?把错误交给谁去处理?程序又该如何从错误中恢复?这是任何程序设计语言都要解决的问题。 所谓错误,是在程序运行过程中发生的异常事件,比如除0溢出、数组越界、文件找不到等,这些事件的发生将阻碍程序的正常运行。为了增加程序的强壮性,程序设计时,必须考虑到可能发生的异常情况并做出相应的处理。 异常处理的优点 把错误处理代码从常规代码中分离出来 按错误类型和差别分组 对无法预测的错误进行捕获和处理 克服了传统方法的错误信息有限的问题 把错误传播给调用堆栈 系统预定义异常对象 NullPointerException Throwable Exception Error VirtualMachineError RuntimeException ArithmeticException ClassNotFoundException FileNotFoundException IOException Exception 类 Exception 定义了一些你的程序可能出现的轻度错误条件 异常可能发生在: 你试图打开的文件并不存在 网络连接中断 操作数处理的超出预描述的范围 需要加载的文件丢失 Error 类定义了一些严重的错误条件 Java的异常处理是通过5个关键字来实现的:try、catch、 finally、throw、throws 捕获异常 catch try finally 执行可能产生 异常的代码 捕获异常 无论是否发生异常, 代码总能执行 手动抛出异常 抛出异常 throw 声明异常 声明方法可能要 抛出的各种异常 throws try,catch 语句的使用 try { //这里的代码可能抛出一个特别的异常 } catch (MyExceptionType e) { 如果MyExceptionType 的异常被抛出,将执行这里的代码 } catch (Exception e) { 如果一个一般 Exception 被抛出时,将执行这里的代码 } 异常的执行流程 正常顺序 1,2,3,5 异常顺序 1,2,4,5 try块外异常不理会 try{ 1 2 3 } catch(Exception e){ 4 } 5 异常发生处 在try/catch块后加入finally块,可以确保无论是否发生异常,finally块中的代码总能被执行 try 块 finally 块 catch 块 无异常 有异常 举例 public class HelloWorld2 { public static void main (String args[]) { int i = 0; String greetings [] = { Hello world!, No, I mean it!, HELLO WORLD!! }; while (i 4) { try { System.out.println (greetings[i]); } catch (ArrayIndexOutOfBoundsException e){ System.out.println(Re-stting Index Value); } finally { System.out.println(This is always printed); } i++; } }} 异常处理机制 如果一个异常没有在当前的try、catch中被处理,它将被抛至方法的调用者处。 如果异常被返回到main方法里,并且仍然没有被处
显示全部