java第06讲异常处理递归和单体程序设计方法课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《java第06讲异常处理递归和单体程序设计方法课件.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 06 异常 处理 递归 单体 程序设计 方法 课件
- 资源描述:
-
1、2022-4-221第第 6 章章 异常处理、递归和单体程序设计方法异常处理、递归和单体程序设计方法2022-4-222本章总体纲要本章总体纲要 异常处理异常处理 递归方法递归方法 单体单体(Singleton)程序设计模式程序设计模式2022-4-223Java 异常处理异常处理(Exception)基础基础 异常异常(Exception)? 异常异常(Exception)是正常程序流程所不能处理是正常程序流程所不能处理或没有处理的异常情况或异常事件。或没有处理的异常情况或异常事件。 在有些书中,异常也称作例外。在有些书中,异常也称作例外。2022-4-224格式格式 在在try语句块中包含
2、可能会产生异常的语句语句块中包含可能会产生异常的语句 紧接着若干个紧接着若干个catch语句块,进行异常处理语句块,进行异常处理 catch语句块与语句块与finally语句块至少存在一个语句块至少存在一个trytry / / 可能会抛出异常的代码可能会抛出异常的代码 catchcatch ( (ExceptionTypeExceptionType ref) ref) / / 异常处理代码异常处理代码 finallyfinally / / 2022-4-225为什么需要异常为什么需要异常? 强制程序异常强制程序异常/错误处理错误处理 同时指定需要异常的种类同时指定需要异常的种类 异常处理模型提
3、供了一种统一处理异常异常处理模型提供了一种统一处理异常/错误的模式错误的模式 传统程序方法传统程序方法: 设置标志位,或返回错误码,分别设置标志位,或返回错误码,分别处理各种异常情况。但在编程时常常出现这样的情处理各种异常情况。但在编程时常常出现这样的情况:忘了对某些异常情况进行处理,尤其是当存在况:忘了对某些异常情况进行处理,尤其是当存在多个分支或者多个开发人员共同开发程序时。多个分支或者多个开发人员共同开发程序时。 简化对异常情况的处理,减少简化对异常情况的处理,减少if-else语句语句2022-4-226什么时候会发生异常什么时候会发生异常? 数组的下标越界数组的下标越界 打开不存在的
4、文件打开不存在的文件 网络无法连接网络无法连接 操作数超出所要求的范围操作数超出所要求的范围 少了所需加载的类,少了所需加载的类, 自定义异常,要求程序处理自定义异常,要求程序处理2022-4-227处理异常的几种常用方法处理异常的几种常用方法一旦捕获异常,马上进行处理一旦捕获异常,马上进行处理重新抛出异常重新抛出异常捕获异常,但并不处理捕获异常,但并不处理通过语句通过语句System.exit()退出应用程序退出应用程序2022-4-228异常异常(Exceptions)类型类型 常见异常常见异常 内存耗尽内存耗尽 数组下标越界数组下标越界 除数为除数为0 非法的参数非法的参数(方法的参数方
5、法的参数)2022-4-229异常异常(Exception)的层次结构的层次结构2022-4-2210运行时发生的异常运行时发生的异常(RuntimeExceptions) 异常随时都可以发生异常随时都可以发生 ArrayIndexOutOfBoundsException NullPointerException 定义了引用,但不指向任何对象定义了引用,但不指向任何对象(object) ClassCastException 数据类型间的转换不合法数据类型间的转换不合法 良好的编程习惯,可以减少很多异常的良好的编程习惯,可以减少很多异常的发生发生2022-4-2211受检异常和非受检异常受检异常
6、和非受检异常 受检异常受检异常 必须在方法声明时通过必须在方法声明时通过throws列出列出 在编译时就能被检测出在编译时就能被检测出 非受检测异常非受检测异常 不必在不必在throws列表中列表中 错误错误(Errors) 和运行时异常和运行时异常(RuntimeExceptions) 受检异常,必须处理才能通过编译受检异常,必须处理才能通过编译 运行时异常只有在运行时才能被发现运行时异常只有在运行时才能被发现 错误常常指的是致命性错误,常常也无法处理错误常常指的是致命性错误,常常也无法处理2022-4-2212处理多种异常处理多种异常(Exception)类型类型 如果含有多外如果含有多外
7、catch语句块,则异常会被语句块,则异常会被第一个与其相匹配的第一个与其相匹配的catch语句块处理语句块处理2022-4-2213finally 语句块语句块 在异常处理过程中,在异常处理过程中,finally 语句块总是会被语句块总是会被执行到执行到: 无论有没有异常发生,也无论有没无论有没有异常发生,也无论有没有异常被捕捉到有异常被捕捉到 可选项可选项: finally 语句块,通常位于语句块,通常位于catch 语句块的语句块的后面后面 可以用来释放可以用来释放try语句块中获得的资源语句块中获得的资源 例如,关闭在例如,关闭在try语句块中打开的文件语句块中打开的文件2022-4-
8、2214throws 列表列表 在方法的声明处列出所有的受检异常在方法的声明处列出所有的受检异常返回类型返回类型 方法名方法名( 参数列表参数列表 ) throws 异常类型异常类型1, 异常类型异常类型2, / 方法体方法体 在本方法内就可以不处理这些异常在本方法内就可以不处理这些异常 调用该方法的方法就必须处理这些异常调用该方法的方法就必须处理这些异常 示例示例:public static void g( ) throws Exception throw new Exception( ); / 方法方法g结束结束2022-4-2215异常处理异常处理: 捕捉捕捉-或者或者-声明声明 如果一
9、个方法调用一个抛出受检异常的如果一个方法调用一个抛出受检异常的方法方法(含有含有throws列表的方法列表的方法),则该方法,则该方法必须捕捉这些受检异常,或通过必须捕捉这些受检异常,或通过throws列表声明这些异常列表声明这些异常2022-4-2216重新抛出异常重新抛出异常 如果如果catch语句块不处理某种异常,可以重语句块不处理某种异常,可以重新抛出异常新抛出异常 抛出异常的方法抛出异常的方法: throw e; 由其外层的由其外层的try- catch 语句块处理语句块处理2022-4-2217本章总体纲要本章总体纲要 异常处理异常处理 递归方法递归方法 单体单体(Singleto
10、n)程序设计模式程序设计模式2022-4-2218递归递归 如果在方法定义中直接或间接地调用该如果在方法定义中直接或间接地调用该方法本身,就称为递归方法本身,就称为递归2022-4-2219汉诺塔汉诺塔(Tower of Hanoi)问题问题有三根柱子:有三根柱子:S、T和和E柱子柱子S上套着上套着n个盘,小盘依次在大盘上面个盘,小盘依次在大盘上面现在要求现在要求:每次只能将一根柱子最上面的一个盘移动到另一每次只能将一根柱子最上面的一个盘移动到另一根柱子上根柱子上不允许将大盘放在小盘上面不允许将大盘放在小盘上面只能利用这三根柱子只能利用这三根柱子1. 将在柱子将在柱子S上的上的n个盘移动到柱子
展开阅读全文