java第06讲异常处理递归和单体程序设计方法课件

上传人:cn****1 文档编号:591467899 上传时间:2024-09-17 格式:PPT 页数:40 大小:378KB
返回 下载 相关 举报
java第06讲异常处理递归和单体程序设计方法课件_第1页
第1页 / 共40页
java第06讲异常处理递归和单体程序设计方法课件_第2页
第2页 / 共40页
java第06讲异常处理递归和单体程序设计方法课件_第3页
第3页 / 共40页
java第06讲异常处理递归和单体程序设计方法课件_第4页
第4页 / 共40页
java第06讲异常处理递归和单体程序设计方法课件_第5页
第5页 / 共40页
点击查看更多>>
资源描述

《java第06讲异常处理递归和单体程序设计方法课件》由会员分享,可在线阅读,更多相关《java第06讲异常处理递归和单体程序设计方法课件(40页珍藏版)》请在金锄头文库上搜索。

1、第第 6 章章 异常处理、递归和单体程序设计方法异常处理、递归和单体程序设计方法2024/9/171本章总体纲要本章总体纲要异常处理异常处理递归方法递归方法单体单体(Singleton)程序设计模程序设计模式式2024/9/172Java 异常处理异常处理(Exception)基础基础异常异常(Exception)?异常异常(Exception)是正常程序流程所不能处理是正常程序流程所不能处理或没有处理的异常情况或异常事件。或没有处理的异常情况或异常事件。在有些书中,异常也称作例外。在有些书中,异常也称作例外。2024/9/173格式格式在在try语句块中包含可能会产生异常的语句语句块中包含可

2、能会产生异常的语句紧接着若干个紧接着若干个catch语句块,进行异常处理语句块,进行异常处理catch语句块与语句块与finally语句块至少存在一个语句块至少存在一个trytry / / 可能会抛出异常的代码可能会抛出异常的代码 catchcatch ( (ExceptionTypeExceptionType ref) ref) / / 异常处理代码异常处理代码 finallyfinally / / 2024/9/174为什么需要异常为什么需要异常?强制程序异常强制程序异常/错误处理错误处理同时指定需要异常的种类同时指定需要异常的种类异常处理模型提供了一种统一处理异常异常处理模型提供了一种统

3、一处理异常/错误的模式错误的模式传统程序方法传统程序方法: 设置标志位,或返回错误码,分别设置标志位,或返回错误码,分别处理各种异常情况。但在编程时常常出现这样的情处理各种异常情况。但在编程时常常出现这样的情况:忘了对某些异常情况进行处理,尤其是当存在况:忘了对某些异常情况进行处理,尤其是当存在多个分支或者多个开发人员共同开发程序时。多个分支或者多个开发人员共同开发程序时。简化对异常情况的处理,减少简化对异常情况的处理,减少if-else语句语句2024/9/175什么时候会发生异常什么时候会发生异常?数组的下标越界数组的下标越界打开不存在的文件打开不存在的文件网络无法连接网络无法连接操作数超

4、出所要求的范围操作数超出所要求的范围少了所需加载的类,少了所需加载的类,自定义异常,要求程序处理自定义异常,要求程序处理2024/9/176处理异常的几种常用方法处理异常的几种常用方法1.一旦捕获异常,马上进行处理一旦捕获异常,马上进行处理2.重新抛出异常重新抛出异常3.捕获异常,但并不处理捕获异常,但并不处理4.通过语句通过语句System.exit()退出应用程序退出应用程序2024/9/177异常异常(Exceptions)类型类型常见异常常见异常内存耗尽内存耗尽数组下标越界数组下标越界除数为除数为0非法的参数非法的参数(方法的参数方法的参数)2024/9/178异常异常(Excepti

5、on)的层次结构的层次结构2024/9/179运行时发生的异常运行时发生的异常(RuntimeExceptions)异常随时都可以发生异常随时都可以发生ArrayIndexOutOfBoundsExceptionNullPointerException定义了引用,但不指向任何对象定义了引用,但不指向任何对象(object)ClassCastException数据类型间的转换不合法数据类型间的转换不合法良好的编程习惯,可以减少很多异常的良好的编程习惯,可以减少很多异常的发生发生2024/9/1710受检异常和非受检异常受检异常和非受检异常受检异常受检异常必须在方法声明时通过必须在方法声明时通过t

6、hrows列出列出在编译时就能被检测出在编译时就能被检测出非受检测异常非受检测异常不必在不必在throws列表中列表中错误错误(Errors) 和运行时异常和运行时异常(RuntimeExceptions)受检异常,必须处理才能通过编译受检异常,必须处理才能通过编译运行时异常只有在运行时才能被发现运行时异常只有在运行时才能被发现错误常常指的是致命性错误,常常也无法处理错误常常指的是致命性错误,常常也无法处理2024/9/1711处理多种异常处理多种异常(Exception)类型类型如果含有多外如果含有多外catch语句块,则异常会被语句块,则异常会被第一个与其相匹配的第一个与其相匹配的catc

7、h语句块处理语句块处理2024/9/1712finally 语句块语句块在异常处理过程中,在异常处理过程中,finally 语句块总是会被语句块总是会被执行到执行到: 无论有没有异常发生,也无论有没无论有没有异常发生,也无论有没有异常被捕捉到有异常被捕捉到可选项可选项: finally 语句块,通常位于语句块,通常位于catch 语句块的语句块的后面后面可以用来释放可以用来释放try语句块中获得的资源语句块中获得的资源例如,关闭在例如,关闭在try语句块中打开的文件语句块中打开的文件2024/9/1713throws 列表列表在方法的声明处列出所有的受检异常在方法的声明处列出所有的受检异常返回

8、类型返回类型 方法名方法名( 参数列表参数列表 ) throws 异常类型异常类型1, 异常类型异常类型2, / 方法体方法体在本方法内就可以不处理这些异常在本方法内就可以不处理这些异常调用该方法的方法就必须处理这些异常调用该方法的方法就必须处理这些异常示例示例:public static void g( ) throws Exception throw new Exception( ); / 方法方法g结束结束2024/9/1714异常处理异常处理: 捕捉捕捉-或者或者-声明声明如果一个方法调用一个抛出受检异常的如果一个方法调用一个抛出受检异常的方法方法(含有含有throws列表的方法列表的

9、方法),则该方法,则该方法必须捕捉这些受检异常,或通过必须捕捉这些受检异常,或通过throws列表声明这些异常列表声明这些异常2024/9/1715重新抛出异常重新抛出异常如果如果catch语句块不处理某种异常,可以重新语句块不处理某种异常,可以重新抛出异常抛出异常抛出异常的方法抛出异常的方法: throw e; 由其外层的由其外层的try- catch 语句块处理语句块处理2024/9/1716本章总体纲要本章总体纲要异常处理异常处理递归方法递归方法单体单体(Singleton)程序设计模程序设计模式式2024/9/1717递归递归如果在方法定义中直接或间接地调用该如果在方法定义中直接或间接

10、地调用该方法本身,就称为递归方法本身,就称为递归2024/9/1718汉诺塔汉诺塔(Tower of Hanoi)问题问题有三根柱子:有三根柱子:S、T和和E柱子柱子S上套着上套着n个盘,小盘依次在大盘上面个盘,小盘依次在大盘上面现在要求现在要求:1.每次只能将一根柱子最上面的一个盘移动到另一每次只能将一根柱子最上面的一个盘移动到另一根柱子上根柱子上2.不允许将大盘放在小盘上面不允许将大盘放在小盘上面3.只能利用这三根柱子只能利用这三根柱子4.将在柱子将在柱子S上的上的n个盘移动到柱子个盘移动到柱子E上上2024/9/1719示例示例/ J_Hanoi.java; 开发者开发者: 雍俊海雍俊海

11、/ 利用递归求解汉诺塔利用递归求解汉诺塔(Tower of Hanoi)问题的例程。问题的例程。public class J_Hanoi public static void mb_hanoi(int n, char start, char temp, char end) if (n=1) System.out.println(将盘从将盘从 + start + 移到移到 + end); else mb_hanoi(n-1, start, end, temp); System.out.println(将盘从将盘从 + start + 移到移到 + end); mb_hanoi(n-1, temp

12、, start, end); / if-else结构结束结构结束 / 方法方法mb_hanoi结束结束 public static void main(String args ) mb_hanoi(3, S, T, E); / 方法方法main结束结束 / 类类J_Hanoi结束结束2024/9/1720编译、运行编译、运行 & 结果结果2024/9/1721本章总体纲要本章总体纲要异常处理异常处理递归方法递归方法单体单体(Singleton)程序设计模程序设计模式式2024/9/1722单体程序设计模式单体程序设计模式要让一个类只能有一个实例对象要让一个类只能有一个实例对象2024/9/17

13、23示例示例/ J_Singleton.java; 开发者开发者: 雍俊海雍俊海/ 单体类实现例程。单体类实现例程。public class J_Singleton private static J_Singleton m_object = new J_Singleton( ); / 定义构造方法定义构造方法: 不允许自行创建这个类的实例对象不允许自行创建这个类的实例对象 private J_Singleton( ) / J_Singleton构造方法结束构造方法结束 / 返回单体实例对象的引用返回单体实例对象的引用 public static J_Singleton mb_getObject

14、( ) return m_object; / 方法方法mb_getObject结束结束 / 类类J_Singleton结束结束2024/9/1724示例示例/ J_Singleton.java; 开发者开发者: 雍俊海雍俊海/ 单体类实现例程。单体类实现例程。public class J_Singleton private static J_Singleton m_object = new J_Singleton( ); / 定义构造方法定义构造方法: 不允许自行创建这个类的实例对象不允许自行创建这个类的实例对象 private J_Singleton( ) / J_Singleton构造方法

15、结束构造方法结束 / 返回单体实例对象的引用返回单体实例对象的引用 public static J_Singleton mb_getObject( ) return m_object; / 方法方法mb_getObject结束结束 / 类类J_Singleton结束结束2024/9/1725编译、运行编译、运行 & 结果结果2024/9/1726单体类单体类Runtimepublic class Runtime private static Runtime currentRuntime = new Runtime( ); public static Runtime getRuntime( )

16、return currentRuntime; /* Dont let anyone else instantiate this class */ private Runtime( ) / . .2024/9/1727类类java.lang.Runtime的成员方法的成员方法public static Runtime getRuntime( )public int availableProcessors( )public Process exec(String command) throws IOExceptionpublic void gc( )public long freeMemory(

17、)public long totalMemory( )public long maxMemory( )2024/9/1728作业作业1.习题习题6.42.习题习题6.52024/9/1729本课件使用要求本课件使用要求使用本课件,必须注明引用使用本课件,必须注明引用(具体见下一具体见下一个幻灯片个幻灯片)书及课件均可能出现一些错误和缺陷,书及课件均可能出现一些错误和缺陷,恳切希望广大读者特别是讲授此课程的恳切希望广大读者特别是讲授此课程的老师批评指正老师批评指正2024/9/1730引用声明引用声明本课件来源于本课件来源于(或参考了或参考了)下面的书及其课下面的书及其课件件:雍俊海雍俊海. J

18、ava程序设计教程程序设计教程. 北京北京: 清华清华大学出版社大学出版社, 2007.2024/9/1731免责声明免责声明请合法使用课件,其用途应当合法有益请合法使用课件,其用途应当合法有益而且不应对任何人造成任何伤害或损失而且不应对任何人造成任何伤害或损失同时请注意教材作者及出版社没有对本同时请注意教材作者及出版社没有对本课件课件作作出任何承诺与保证出任何承诺与保证2024/9/1732参考文献参考文献本课件的参考文献与下面书的参考文献相同本课件的参考文献与下面书的参考文献相同雍俊海雍俊海. Java程序设计教程程序设计教程. 北京北京: 清华大学清华大学出版社出版社, 2007.雍俊海

19、雍俊海. Java程序设计习题集程序设计习题集(含参考答案含参考答案). 北京北京: 清华大学出版社清华大学出版社, 2006. 雍俊海雍俊海. Java程序设计程序设计. 北京北京: 清华大学出版清华大学出版社社, 2004.2024/9/1733雍俊海编写过的教材和教参雍俊海编写过的教材和教参1.雍俊海雍俊海. 计算机动画算法与编程基础计算机动画算法与编程基础. 北京北京: 清华大学出清华大学出版社版社. 2008. 2.雍俊海雍俊海. Java程序设计程序设计. 北京北京: 清华大学出版社清华大学出版社. 2008. 3.雍俊海雍俊海. Java程序设计教程程序设计教程(第第2版版).

20、北京北京: 清华大学出清华大学出版社版社. 2007. 4.雍俊海雍俊海. Java程序设计习题集程序设计习题集(含参考答案含参考答案). 北京北京: 清华清华大学出版社大学出版社, 2006. 5.雍俊海雍俊海. Java程序设计程序设计. 北京北京: 清华大学出版社清华大学出版社. 2004. 2024/9/1734雍俊海编写过的教材和教参雍俊海编写过的教材和教参雍俊海雍俊海. 计算机动画算法与编程基础计算机动画算法与编程基础. 北京北京: 清华大清华大学出版社学出版社. 2008.2024/9/1735雍俊海编写过的教材和教参雍俊海编写过的教材和教参雍俊海雍俊海. Java程序设计程序设

21、计. 北京北京: 清华大学出版社清华大学出版社, 2008.2024/9/1736雍俊海编写过的教材和教参雍俊海编写过的教材和教参雍俊海雍俊海. Java程序设计教程程序设计教程.清华大学出版社清华大学出版社, 2007.普通高等教育精品教材普通高等教育精品教材普通高等教育普通高等教育“十一五十一五”国国家级规划教材家级规划教材2024/9/1737雍俊海编写过的教材和教参雍俊海编写过的教材和教参雍俊海雍俊海. Java程序设计习题程序设计习题集(含参考答案)集(含参考答案).清华大学出版社清华大学出版社, 2006.2024/9/1738雍俊海编写过的教材和教参雍俊海编写过的教材和教参雍俊海雍俊海. JAVA程序设计程序设计. 北京北京: 清华大学出版社清华大学出版社. 2004.2024/9/1739谢谢谢谢请多指教请多指教2024/9/1740

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

最新文档


当前位置:首页 > 办公文档 > 工作计划

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