异常(exception)处理

上传人:kms****20 文档编号:51641235 上传时间:2018-08-15 格式:PPT 页数:25 大小:558.50KB
返回 下载 相关 举报
异常(exception)处理_第1页
第1页 / 共25页
异常(exception)处理_第2页
第2页 / 共25页
异常(exception)处理_第3页
第3页 / 共25页
异常(exception)处理_第4页
第4页 / 共25页
异常(exception)处理_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《异常(exception)处理》由会员分享,可在线阅读,更多相关《异常(exception)处理(25页珍藏版)》请在金锄头文库上搜索。

1、第七章 异常(Exception)处理异常l运行期出现的错误 (注意看异常信息,看名字,看行号) 健壮性代码public class HelloWorld public static void main (String args) int i = 0; String greetings = “Hello!“,“No“,“WORLD!“;while (i 4) System.out.println (greetingsi);i+; 正常与异常l正常与异常之比可达30 比 70%打开文件l文件不存在?l文件打不开?读取文件l没有足够可读内容?l权限不允许读写文件l磁盘满l网络断线关闭文件异常机制简

2、介l在进行程序设计时,错误的产生是不可避免的, 如何处理错误?把错误交给谁去处理?程序又该 如何从错误中恢复?这是任何程序设计语言都要 解决的问题。l所谓错误,是在程序运行过程中发生的异常事件 ,比如除0溢出、数组越界、文件找不到等,这些 事件的发生将阻碍程序的正常运行。为了增加程 序的强壮性,程序设计时,必须考虑到可能发生 的异常情况并做出相应的处理。异常处理的优点l把错误处理代码从常规代码中分离出来l按错误类型和差别分组l对无法预测的错误进行捕获和处理l克服了传统方法的错误信息有限的问题l把错误传播给调用堆栈系统预定义异常对象NullPointerExceptionThrowableExc

3、eptionErrorVirtualMachineErrorRuntimeExceptionArithmeticExceptionClassNotFoundExceptionFileNotFoundExceptionIOException须查异常与不须查异常l须查异常多数的 Throwable、Exceptionl不须查异常Error、RuntimeExceptionl当在一个方法的代码中抛出一个须查异常时,这个异常或者 被方法中的try-catch结构捕获,或者在方法的throws语句中 声明l编译器检查程序保证所有须查异常都被程序显示的处理Exceptionl类 Exception 定义了

4、一些你的程序可能出 现的轻度错误条件l异常可能发生在: 你试图打开的文件并不存在网络连接中断 操作数处理的超出预描述的范围 需要加载的文件丢失lError 类定义了一些严重的错误条件Java的异常处理是通过5个关键字来实现的:try、catch、 finally、throw、throws捕获异常 catchtryfinally执行可能产生 异常的代码 捕获异常 无论是否发生异常, 代码总能执行手动抛出异常 抛出异常 thro w声明异常 声明方法可能要 抛出的各种异常 throw stry,catch 语句的使用try /这里的代码可能抛出一个特别的异常 catch (MyExceptionT

5、ype e) 如果MyExceptionType 的异常被抛出,将执行这 里的代码 catch (Exception e) 如果一个一般 Exception 被抛出时,将执行这里的 代码 异常的执行流程n正常顺序n1,2,3,5 n异常顺序n1,2,4,5ntry块外异常不理会try123catch(Exception e)45异常发生处在try/catch块后加入finally块,可以确保无论是否发生异常,finally 块中的代码总能被执行try 块 finally 块 catch 块 无异常 有异常 举例public class HelloWorld2 public static voi

6、d main (String args) int i = 0;String greetings = “Hello world!“, “No, I mean it!“, “HELLO WORLD!“ ;while (i 4) try System.out.println (greetingsi); catch (ArrayIndexOutOfBoundsException e)System.out.println(“Re-stting Index Value“); finally System.out.println(“This is always printed“);i+; 异常处理机制l如果

7、一个异常没有在当前的try、catch中被 处理,它将被抛至方法的调用者处。l如果异常被返回到main方法里,并且仍然 没有被处理,程序将异常中止。练习l编写一个类ExceptionTest1,在main方法 中使用try、catch、finally:在try块中,编写被0除的代码在catch块中,捕获被0除所产生的异常,并且 打印异常信息在finally块中,打印一条语句多重catch块l一段代码可能会引发多种类型的异常l当引发异常时,会按顺序来查看每个 catch 语句,并执行第一个与异常类型匹配的 catch语句l执行其中的一条 catch 语句之后,其后的 catch 语句将被忽略 抛

8、出异常l如果在当前环境无法解决一个异常,就要 将其抛出,把异常交给调用者处理 练习l编写类ExceptionTest2:定义两个方法:go()和main() 在go方法中声明要抛出异常,在该方法体内, 抛出一个Exception对象在main()方法中,调用go方法,使用try/catch 捕获go方法中抛出的异常用户自定义异常对象l系统预定义异常类代表了程序运行过程中可能产生的绝大多 数异常。如果希望记录和应用相关的错误信息,则可创建自 己的异常类。该类的定义和普通类无太大区别,只需继承 Exception类或RuntimeException类即可。例如:public class MyPro

9、jException extends Exception 自定义异常l通过继承java.lang.Exception类声明自己的 异常类。l在方法适当的位置生成自定义异常的实例 ,并用throw抛出。l在方法的声明部分用throws声明该方法可 能抛出的异常。自定义异常举例:public class ServerTimedOutException extends Exceptionlprivate String serverName;lprivate int port;lpublic ServerTimedOutException(String serverName, int port)lth

10、is.serverName=serverName;lthis.port = port;llpublic int getPort()lreturn port;llpublic void setPort(int port)lthis.port = port;llpublic String getServerName()lreturn serverName;llpublic void setServerName(String serverName)lthis.serverName = serverName;llpublic class Testlpublic static void main(Str

11、ing args)lTest t=new Test();ltryllt.connectMe(“sinojava“, 80);l catch (ServerTimedOutException e)lSystem.out.println(“连接服务器“+e.getServerName()+“,端口为“+e.getPort()+“失败“);llpublic void connectMe(String serverName,int port) throws ServerTimedOutExceptionlif(serverName.equals(“sinojava“)lelselthrow new S

12、erverTimedOutException(“sinojava“, port);llJava异常的使用l对非运行时异常必须捕获或声明。对运行时异常,若不能预测它何 时发生,程序可不作处理,而是交给Java运行时系统来处理;若 能预知它可能发生的地点和时间,则应在程序中处理,而不应简单 地交给运行时系统。l异常可以人为地抛出,用throw new 语句。l异常可以是系统已经定义好的,也可以是用户自己定义的。用户自 己定义的异常一定继承自Throwable或Exception类。l在自定义异常类时,如果它所对应的异常事件通常总是在运行时产 生,而且不容易预测它将在何时何地发生,可以将它定义为运行时 异常,否则应定义为非运行时异常。l应该使用finally语句为异常处理提供统一的出口。关于异常的设计l异常处理不是用来代替测试程序l不要压制异常l抛出异常不是一件坏事

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号