JAVA大学教学课件第七章异常处理.ppt

上传人:wuy****n92 文档编号:70791874 上传时间:2023-01-28 格式:PPT 页数:18 大小:315.99KB
返回 下载 相关 举报
JAVA大学教学课件第七章异常处理.ppt_第1页
第1页 / 共18页
JAVA大学教学课件第七章异常处理.ppt_第2页
第2页 / 共18页
点击查看更多>>
资源描述

《JAVA大学教学课件第七章异常处理.ppt》由会员分享,可在线阅读,更多相关《JAVA大学教学课件第七章异常处理.ppt(18页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、 Java语言程序设计语言程序设计第七章第七章:异常处理异常处理 7.1 什么是异常什么是异常-1 异常是程序执行过程中出现的正常事件,是程序所遇到的轻微异常是程序执行过程中出现的正常事件,是程序所遇到的轻微错误,即各种意外情况。比如错误,即各种意外情况。比如:1、用户输入错误;2、文件找不到;3、内存不足;4、算术运算错;5、数组下标越界;6、网络连接中断;7、异常发生时,我们应该编写代码来处理异常,并保证程序继续异常发生时,我们应该编写代码来处理异常,并保证程序继续执行,而不是让程序中断。执行,而不是让程序中断。7.1 什么是异常什么是异常-2程序举例:publicclassHelloWo

2、rldpublicstaticvoidmain(Stringargs)inti=0;Stringgreetings=Helloworld!,No,Imeanit!,HELLOWORLD!;while(i java HelloWorld Hello world!No,I mean it!HELLO WORLD!java.lang.ArrayIndexOutOfBoundsException:3at HelloWorld.main(HelloWorld.java:12)程序出现以上错误,就会在所处方法中产生一个异常对象。这程序出现以上错误,就会在所处方法中产生一个异常对象。这个异常对象包括错误的类

3、型,错误出现时程序的运行状态以及对该个异常对象包括错误的类型,错误出现时程序的运行状态以及对该错误的详细描述。异常处理允许程序捕获异常,处理它们,然后继错误的详细描述。异常处理允许程序捕获异常,处理它们,然后继续程序执行。续程序执行。7.2 异常的分类异常的分类-1类充当所有异常对象的父类,可以使用异常处理机制将这些对象抛出并捕获。在Throwable类中定义方法来检索与异常相关的错误信息,并打印显示异常发生的栈跟踪信息。它有Error和Exception两个基本子类,如下图所示:7.2 异常的分类异常的分类-2 7.2 异常的分类异常的分类-3每个异常的目的描述如下:a.Error表示恢复不

4、是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。b.RuntimeException表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。比如,如果数组索引扩展不超出数组界限,那么,ArrayIndexOutOfBoundsException异常从不会抛出。因为一个正确设计和实现的程序从不出现这种异常,通常对它不做处理。这会导致一个运行时信息,应确保能采取措施更正问题,而不是将它藏到谁也不注意的地方。c.其它异常表示一种运行时的困难,它通常由环境效果引起,可以进行处理。例子包括文件未找到或无效URL异常(用户打了一个错误的URL),

5、如果用户误打了什么东西,两者都容易出现。这两者都可能因为用户错误而出现,这就鼓励程序员去处理它们。7.3 常见异常常见异常Java编程语言提供几种预定义的异常。下面是可能遇到的更具共同性的异常中的几种:ArithmeticException整数被0除,运算得出的结果。inti=12/0;NullPointerException当对象没被实例化时,访问对象的属性或方法的尝试。Dated=null;System.out.println(d.toString();ArrayIndexOutofBoundsException访问超过数组大小范围的一个元素的尝试。NegativeArraySizeExc

6、eption创建带负维数大小的数组的尝试。SecurityException典型地被抛出到浏览器中,SecurityManager类将抛出applets的一个异常,该异常企图做下述工作(除非明显地得到允许):1.访问一个本地文件2.打开主机的一个socket,这个主机与服务于applet的主机不是同一个。3.在运行时环境中执行另一个程序 7.4 异常处理异常处理-1JavaJava编程语言提供了一个异常处理的有效机制。编程语言提供了一个异常处理的有效机制。1、try和catch语句try /code that might throw a particular exception catch(M

7、yExceptionType e)/code to execute if a MyExceptionType exception is thrown catch(Exception e)/code to execute if a general Exception exception is thrown 7.4 异常处理异常处理-22、finally语句语句finally语句定义一个总是执行的代码块,无论是否出现异常,无论出现那种异常,甚至try语句块含有returnbreakcontinue等跳转语句时,finally语句均需被执行。try /code that might throw a

8、particular exception catch(Exception e)/code to execute if a general Exception exception is thrown finally /code to execute always 7.4 异常处理异常处理-3public static void main(String args)int i=0;String greetings =Hello world!,No,I mean it!,HELLO WORLD!;while(i 4)try System.out.println(greetingsi);catch(Ar

9、rayIndexOutOfBoundsException e)System.out.println(Re-setting Index Value);i=-1;finally System.out.println(This is always printed);i+;/end while()/end main()7.4 异常处理异常处理-4当程序被执行时,下面出现的信息将在屏幕上循环出现。当程序被执行时,下面出现的信息将在屏幕上循环出现。Hello world!This is always printedNo,I mean it!This is always printedHELLO WORLD

10、!This is always printedRe-setting Index Value This is always printed 7.4 异常处理异常处理-53、调用栈机制、调用栈机制如果方法中的一个语句抛出一个没有在相应的try/catch块中处理的异常,那么这个异常就被抛出到调用方法中。如果异常也没有在调用方法中被处理,它就被抛出到该方法的调用程序。这个过程要一直延续到异常被处理。如果异常到这时还没被处理,它便回到main(),而且,如果main()不处理它,那么,该异常就异常地中断程序。考虑这样一种情况,在该情况中main()方法调用另一个方法(比如,first()),然后它调用

11、另一个(比如,second())。如果在second()中发生异常,那么必须做一个检查来看看该异常是否有一个catch语句;如果没有,那么对调用栈(first())中的下一个方法进行检查,然后检查下一个(main())。如果这个异常在该调用栈上没有被最后一个方法处理,那么就会发生一个运行时错误,程序终止执行。7.4 异常处理异常处理-6 7.5 创建自己的异常创建自己的异常-1为了写出健壮的代码,Java编程语言要求,当一个方法在栈(即,它已经被调用)上发生Exception(它与Error或RuntimeException不同)时,程序员可以做满足该要求的两件事:第一,通过将Trycatch

12、()()块纳入其代码中,在这里捕获给被命名为属于某个超类的异常,并调用方法处理它。即使catch块是空的,这也算是处理情况。第二,让被调用的方法表示它将不处理异常,而且该异常将被抛回到它所遇到的调用方法中。它是按如下所示通过用throws子句标记的该调用方法的声明来实现的:public void troublesome()throws IOException,MyException关键字throws之后是所有异常的列表,方法可以抛回到它的调用程序中。尽管这里只显示了一个异常,如果有其他的可能的异常可以通过该方法被抛出,那么,可以使用逗号分开的列表。7.5 创建自己的异常创建自己的异常-2程序举

13、例:程序举例:1、创建自己的异常public class ServerTimedOutException extends Exception private String reason;private int port;public ServerTimedOutException(String reason,int port)this.reason=reason;this.port=port;public String getReason()return reason;public int getPort()return port;7.5 创建自己的异常创建自己的异常-32、可使用语句来抛出已

14、经创建的异常:throw new ServerTimedOutException(Could not connect,80);3、考虑一个客户服务器程序。在客户代码中,要与服务器连接,并希望服务器在5秒钟内响应。如果服务器没有响应,那么,代码就如下所述抛出一个异常(ServerTimedOutException)。public void connectMe(String serverName)throws ServerTimedOutException int success;int portToConnect=80;success=open(serverName,portToConnect)

15、;if(success=-1)throw new ServerTimedOutException(Could not connect,80);/end of if/end of connectMe()7.5 创建自己的异常创建自己的异常-44、要捕获异常,使用try语句:public void findServer()try connectMe(defaultServer);catch(ServerTimedOutException e)System.out.println(Server timed out,trying alternate);try connectMe(alternateServer);catch(ServerTimedOutException e1)System.out.println(No server currently available);/end of catch /end of catch/end of findServer

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com