文档详情

Java开发程序设计05.ppt

发布:2018-05-05约1.7千字共17页下载文档
文本预览下载声明
Java 程序设计 * * Java程序设计 Programming in Java 清华大学 Tsinghua University * * 第 6 章 异常处理 * * Java 异常处理(Exception)基础 异常(Exception)? 异常(Exception)是正常程序流程所不能处理或没有处理的异常情况或异常事件。 异常也称作例外。 * * 格式 在try语句块中包含可能会产生异常的语句 紧接着若干个catch语句块,进行异常处理 catch语句块与finally语句块至少存在一个 try{ // 可能会抛出异常的代码 }catch (ExceptionType ref){ // 异常处理代码 }finally{ // … } * * 为什么需要异常处理? 强制程序异常/错误处理 同时指定需要异常的种类 异常处理模型提供了一种统一处理异常/错误的模式 传统程序方法: 设置标志位,或返回错误码,分别处理各种异常情况。但在编程时常常出现这样的情况:忘了对某些异常情况进行处理,尤其是当存在多个分支或者多个开发人员共同开发程序时。 简化对异常情况的处理,减少if-else语句 * * 什么时候会发生异常? 数组的下标越界 打开不存在的文件 网络无法连接 操作数超出所要求的范围 少了所需加载的类, 自定义异常,要求程序处理 * * 处理异常的几种常用方法 一旦捕获异常,马上进行处理 重新抛出异常 捕获异常,但并不处理 通过语句System.exit()退出应用程序 * * 异常(Exceptions)类型 常见异常 内存耗尽 数组下标越界 除数为0 非法的参数(方法的参数) * * 异常(Exception)的层次结构 * * 运行时发生的异常(RuntimeExceptions) 异常随时都可以发生 ArrayIndexOutOfBoundsException NullPointerException 定义了引用,但不指向任何对象(object) ClassCastException 数据类型间的转换不合法 良好的编程习惯,可以减少很多异常的发生 * * 受检异常和非受检异常 受检异常 必须在方法声明时通过throws列出或try/catch/finally处理 在编译时就能被检测出 非受检测异常 不必在throws列表中 错误(Errors) 和运行时异常(RuntimeExceptions) 受检异常,必须处理才能通过编译 运行时异常只有在运行时才能被发现 错误常常指的是致命性错误,常常也无法处理 * * 处理多种异常(Exception)类型 如果含有多个catch语句块,则异常会被第一个与其相匹配的catch语句块处理 * * finally 语句块 在异常处理过程中,finally 语句块总是会被执行到: 无论有没有异常发生,也无论有没有异常被捕捉到 可选项: finally 语句块,通常位于catch 语句块的后面释放try语句块中获得的资源 例如,关闭在try语句块中 可以用来打开的文件 * * throws 列表 在方法的声明处列出所有的受检异常 返回类型 方法名( 参数列表 ) throws 异常类型1, 异常类型2,… { // 方法体 } 在本方法内就可以不处理这些异常 调用该方法的方法就必须处理这些异常 示例: public static void g( ) throws Exception { throw new Exception( ); } // 方法g结束 * * 异常处理: 捕捉-或者-声明 如果一个方法调用一个抛出受检异常的方法(含有throws列表的方法),则该方法必须捕捉这些受检异常,或通过throws列表声明这些异常 * * 重新抛出异常 如果catch语句块不处理某种异常,可以重新抛出异常 抛出异常的方法: throw e; 由其外层的try- catch 语句块处理 * * Practice makes perfect. * Java 程序设计 *
显示全部
相似文档