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

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

ID:39968995

大小:698.50 KB

页数:40页

时间:2019-07-16

java第06讲异常处理、递归和单体程序设计方法_第1页
java第06讲异常处理、递归和单体程序设计方法_第2页
java第06讲异常处理、递归和单体程序设计方法_第3页
java第06讲异常处理、递归和单体程序设计方法_第4页
java第06讲异常处理、递归和单体程序设计方法_第5页
资源描述:

《java第06讲异常处理、递归和单体程序设计方法》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、2021/9/71第6章异常处理、递归和单体程序设计方法2021/9/72本章总体纲要异常处理递归方法单体(Singleton)程序设计模式2021/9/73Java异常处理(Exception)基础异常(Exception)?异常(Exception)是正常程序流程所不能处理或没有处理的异常情况或异常事件。在有些书中,异常也称作例外。2021/9/74格式在try语句块中包含可能会产生异常的语句紧接着若干个catch语句块,进行异常处理catch语句块与finally语句块至少存在一个try{//可能会抛出异

2、常的代码}catch(ExceptionTyperef){//异常处理代码}finally{//…}2021/9/75为什么需要异常?强制程序异常/错误处理同时指定需要异常的种类异常处理模型提供了一种统一处理异常/错误的模式传统程序方法:设置标志位,或返回错误码,分别处理各种异常情况。但在编程时常常出现这样的情况:忘了对某些异常情况进行处理,尤其是当存在多个分支或者多个开发人员共同开发程序时。简化对异常情况的处理,减少if-else语句2021/9/76什么时候会发生异常?数组的下标越界打开不存在的文件网络无法

3、连接操作数超出所要求的范围少了所需加载的类,自定义异常,要求程序处理2021/9/77处理异常的几种常用方法一旦捕获异常,马上进行处理重新抛出异常捕获异常,但并不处理通过语句System.exit()退出应用程序2021/9/78异常(Exceptions)类型常见异常内存耗尽数组下标越界除数为0非法的参数(方法的参数)2021/9/79异常(Exception)的层次结构2021/9/710运行时发生的异常(RuntimeExceptions)异常随时都可以发生ArrayIndexOutOfBoundsExc

4、eptionNullPointerException定义了引用,但不指向任何对象(object)ClassCastException数据类型间的转换不合法良好的编程习惯,可以减少很多异常的发生2021/9/711受检异常和非受检异常受检异常必须在方法声明时通过throws列出在编译时就能被检测出非受检测异常不必在throws列表中错误(Errors)和运行时异常(RuntimeExceptions)受检异常,必须处理才能通过编译运行时异常只有在运行时才能被发现错误常常指的是致命性错误,常常也无法处理2021/9

5、/712处理多种异常(Exception)类型如果含有多外catch语句块,则异常会被第一个与其相匹配的catch语句块处理2021/9/713finally语句块在异常处理过程中,finally语句块总是会被执行到:无论有没有异常发生,也无论有没有异常被捕捉到可选项:finally语句块,通常位于catch语句块的后面可以用来释放try语句块中获得的资源例如,关闭在try语句块中打开的文件2021/9/714throws列表在方法的声明处列出所有的受检异常返回类型方法名(参数列表)throws异常类型1,异常

6、类型2,…{//方法体}在本方法内就可以不处理这些异常调用该方法的方法就必须处理这些异常示例:publicstaticvoidg()throwsException{thrownewException();}//方法g结束2021/9/715异常处理:捕捉-或者-声明如果一个方法调用一个抛出受检异常的方法(含有throws列表的方法),则该方法必须捕捉这些受检异常,或通过throws列表声明这些异常2021/9/716重新抛出异常如果catch语句块不处理某种异常,可以重新抛出异常抛出异常的方法:throwe;由

7、其外层的try-catch语句块处理2021/9/717本章总体纲要异常处理递归方法单体(Singleton)程序设计模式2021/9/718递归如果在方法定义中直接或间接地调用该方法本身,就称为递归2021/9/719汉诺塔(TowerofHanoi)问题有三根柱子:S、T和E柱子S上套着n个盘,小盘依次在大盘上面现在要求:每次只能将一根柱子最上面的一个盘移动到另一根柱子上不允许将大盘放在小盘上面只能利用这三根柱子将在柱子S上的n个盘移动到柱子E上2021/9/720示例//J_Hanoi.java;开发者:

8、雍俊海//利用递归求解汉诺塔(TowerofHanoi)问题的例程。publicclassJ_Hanoi{publicstaticvoidmb_hanoi(intn,charstart,chartemp,charend){if(n<=1)System.out.println("将盘从"+start+"移到"+end);else{mb_hanoi(n-1,start,end,temp);

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。