预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共45页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

异常异常的概念异常的概念异常的概念异常的概念异常的概念什么情况下使用例外机制? 当方法因为自身无法控制的原因而不能完成其任务 文件不存在,网络连接无法建立…… 处理在方法、类库、类中抛出的例外 如FileInputStream.read产生IOException 在大的项目中采用统一的方式处理例外时 如编写一个文字处理器 例外应该是不经常发生但却可能发生的故障 一定发生的事件不应该用例外机制来处理 例外处理用于使系统从故障中恢复 提示信息/不产生无效的结果/释放资源不同的例外处理策略 关键性应用(处理所有例外) 实验软件(可以忽略许多例外) 处理例外时的注意事项 终止程序会导致资源泄漏,利用例外处理释放资源 尽可能近地处理例外,这样程序清晰易读 能在局部处理的错误不要使用例外机制 例外机制的处理比正常处理效率低异常的概念异常的分类异常的分类异常的分类例外的分类Error:由Java虚拟机生成并抛出,包括动态链接失败、虚拟机错误等,Java程序不做处理。 RuntimeException:Java虚拟机在运行时生成的例外,如被0除等系统错误、数组下标超范围等,其产生比较频繁,处理麻烦,对程序可读性和运行效率影响太大。因此由系统检测,用户可不做处理,系统将它们交给缺省的异常处理程序(当然,必要时,用户可对其处理)。 Exception:一般程序中可预知的问题,其产生的例外可能会带来意想不到的结果,因此Java编译器要求Java程序必须捕获或声明所有的非运行时异常。publicstaticvoidmain(String[]args){ try{ testThrowable(); } catch(Throwablet){ System.err.println(t.toString()); System.err.println(t.getMessage()); System.err.println(t.getLocalizedMessage()); t.printStackTrace(); } } … staticvoidtestThrowable()throwsThrowable{ thrownewThrowable("测试Throwable的用法。"); } java.lang.Throwable:测试Throwable的用法。 测试Throwable的用法。 测试Throwable的用法。 java.lang.Throwable:测试Throwable的用法。 attest.Untitled1.testThrowable(Untitled1.java:137) attest.Untitled1.main(Untitled1.java:79)publicstaticvoidmain(String[]args){ try{ testThrowable(); } catch(Throwablet){ System.err.println(t.toString()); System.err.println(t.getMessage()); System.err.println(t.getLocalizedMessage()); t.printStackTrace(System.err); } } … staticvoidtestThrowable()throwsThrowable{ thrownewThrowable(); } java.lang.Throwable null null java.lang.Throwable attest.Untitled1.testThrowable(Untitled1.java:137) attest.Untitled1.main(Untitled1.java:79)例外示例: (1)编译时例外:在程序中必须对其进行处理,否则编译器会指出错误。 在使用能够产生异常的方法而没有捕获和处理,程序将不能通过编译。 (2)运行时例外:程序中可以不做处理,直接由运行时系统来处理。捕获异常捕获例外捕获例外catch(Exceptione) 捕获所有Exception catch(Throwablet) 捕获Exception和Error捕获例外 ——catch语句在catch代码段中产生的例外不是由相同try的后续catch代码段处理,而是由包含整个try-catch结构的上层try代码段检测并处理 可以把catch到的例外对象再次抛出,使上层try-catch结构继续处理该例外事件;也可以把例外对象转换为其它例外对象… catch(Exceptione){throwe;} try-catch机制不该被用于流程控制,例外情形应该是很稀少的,而不是经常性的 在catch代码段中的return语句用于退出方