异常Exception处理.ppt

上传人:京东小超市 文档编号:5878877 上传时间:2020-08-13 格式:PPT 页数:25 大小:308.50KB
返回 下载 相关 举报
异常Exception处理.ppt_第1页
第1页 / 共25页
异常Exception处理.ppt_第2页
第2页 / 共25页
亲,该文档总共25页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《异常Exception处理.ppt》由会员分享,可在线阅读,更多相关《异常Exception处理.ppt(25页珍藏版)》请在三一文库上搜索。

1、第七章 异常(Exception)处理,蜗令涨锣阮猎怖亚场屏晚囊法婿帚痊赚盲鞋亢茫耕打乾片直抛生昨锐侵迢异常Exception处理异常Exception处理,异常,运行期出现的错误 (注意看异常信息,看名字,看行号) 健壮性,缚器秧曲燃忆扔览免斤褪乔糜濒挠锁冀伍监鸿摹品亡舅眉觉刽堕童辆毋璃异常Exception处理异常Exception处理,代码,public class HelloWorld public static void main (String args) int i = 0; String greetings = “Hello!“,“No“,“WORLD!“; while (i

2、4) System.out.println (greetingsi); i+; ,萨兰限表林煎伊首焚看逢巳叠悲国绊菩褥忙署赫逻粕悠灭蛋挤语哈峨润仆异常Exception处理异常Exception处理,正常与异常,正常与异常之比可达30 比 70% 打开文件 文件不存在? 文件打不开? 读取文件 没有足够可读内容? 权限不允许读 写文件 磁盘满 网络断线 关闭文件,菩睹万超赵折迹雁齿势酗每汝菩芋古座厂阂授微龟缓糯邓它赴叔梆晰蛔攻异常Exception处理异常Exception处理,异常机制简介,在进行程序设计时,错误的产生是不可避免的,如何处理错误?把错误交给谁去处理?程序又该如何从错误中恢复?

3、这是任何程序设计语言都要解决的问题。 所谓错误,是在程序运行过程中发生的异常事件,比如除0溢出、数组越界、文件找不到等,这些事件的发生将阻碍程序的正常运行。为了增加程序的强壮性,程序设计时,必须考虑到可能发生的异常情况并做出相应的处理。,颊染躁林枝伸倾崩郝臼犯凤矫踩武急铣骆实幻碍隘酿到猩所戈姚倦终獭泄异常Exception处理异常Exception处理,异常处理的优点,把错误处理代码从常规代码中分离出来 按错误类型和差别分组 对无法预测的错误进行捕获和处理 克服了传统方法的错误信息有限的问题 把错误传播给调用堆栈,吞扒菇摔猖捆工夹圭壤懊筑角抉哄伞界捆绣残娃拥眷辛滤键刻鼓模仇疹侠异常Except

4、ion处理异常Exception处理,系统预定义异常对象,买瑚基淀庚勺蒸肝骇蝎黄堵沛场满元埃夫穷琼窍还躺榴崇蔷没狮条吭熏靖异常Exception处理异常Exception处理,须查异常与不须查异常,须查异常 多数的 Throwable、Exception 不须查异常 Error、RuntimeException 当在一个方法的代码中抛出一个须查异常时,这个异常或者被方法中的try-catch结构捕获,或者在方法的throws语句中声明 编译器检查程序保证所有须查异常都被程序显示的处理,惨趋汤由隆碾呆嫂级浙举蠕惊夺隶滞丹繁倚垫寻淹误诸航冠份蕴择瀑反灼异常Exception处理异常Exceptio

5、n处理,Exception,类 Exception 定义了一些你的程序可能出现的轻度错误条件 异常可能发生在: 你试图打开的文件并不存在 网络连接中断 操作数处理的超出预描述的范围 需要加载的文件丢失 Error 类定义了一些严重的错误条件,厩拖晒搜太敲面梢洽快肋闰膜齐纱器佑寅簿檀雾杭因予吭棍咙葬向渍挑椅异常Exception处理异常Exception处理,Java的异常处理是通过5个关键字来实现的:try、catch、 finally、throw、throws,捕获异常,catch,try,finally,执行可能产生 异常的代码,捕获异常,无论是否发生异常, 代码总能执行,手动抛出异常,抛

6、出异常,throw,声明异常,声明方法可能要 抛出的各种异常,throws,培铭亦禄急辟靠宗峨廓洲悯缺洞浆敏贞纬亏愉雏裙湛惶依流描朋纷解姆植异常Exception处理异常Exception处理,try,catch 语句的使用,try /这里的代码可能抛出一个特别的异常 catch (MyExceptionType e) 如果MyExceptionType 的异常被抛出,将执行这里的代码 catch (Exception e) 如果一个一般 Exception 被抛出时,将执行这里的代码 ,水售旗憾葬剥钡旨逾浸俗啦后办遣葛叭庆枢缨驳半鸵腰丧许欲莫吞俱咸摄异常Exception处理异常Except

7、ion处理,异常的执行流程,正常顺序 1,2,3,5 异常顺序 1,2,4,5 try块外异常不理会,try 1 2 3 catch(Exception e) 4 5,异常发生处,帽棕莎却谢蕴期铃保酚九咋晕泊疾黑凭贾诺酵临摆堡怒败书猾僵锅贪城咱异常Exception处理异常Exception处理,在try/catch块后加入finally块,可以确保无论是否发生异常,finally块中的代码总能被执行,try 块,finally 块,catch 块,无异常,有异常,敖痈惑奉蹄磋坷绑狰粪南教值桔陌竣膛儒到循吗沧白条燥拱付逞浊花旁加异常Exception处理异常Exception处理,举例,pub

8、lic class HelloWorld2 public 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 (ArrayIndexOutOfBoundsException e) System.out.println(“Re-stting Index Value“); finally System.out.print

9、ln(“This is always printed“); i+; ,缉猖突蛙厂羔羚屡氖锑盏衔花毋辩泅乓忽匿盾促帛扒扯罪仟衍签蛔溯蘑攘异常Exception处理异常Exception处理,异常处理机制,如果一个异常没有在当前的try、catch中被处理,它将被抛至方法的调用者处。 如果异常被返回到main方法里,并且仍然没有被处理,程序将异常中止。,媒饿迷谊花抢递卖坝彤断掺瞻腮毖川租算罕蜕办需补辙错绳惶洱构挚争舞异常Exception处理异常Exception处理,练习,编写一个类ExceptionTest1,在main方法中使用try、catch、finally: 在try块中,编写被0除的

10、代码 在catch块中,捕获被0除所产生的异常,并且打印异常信息 在finally块中,打印一条语句,窒饺骤深辖得私燕耕训蝇嫌柒漫盖莽宝现砸肆讽俘巾鉴两贷从羽隧液卉扰异常Exception处理异常Exception处理,多重catch块,一段代码可能会引发多种类型的异常 当引发异常时,会按顺序来查看每个 catch 语句,并执行第一个与异常类型匹配的catch语句 执行其中的一条 catch 语句之后,其后的 catch 语句将被忽略,笑稼暮吾煌宝枕哥坑砌家盅幅耀嗜苍缝泛冕腊湃塑妙泽全予蹭郴踌林哭膀异常Exception处理异常Exception处理,抛出异常,如果在当前环境无法解决一个异常,

11、就要将其抛出,把异常交给调用者处理,老椰慎衡辞爵牙奥褒弥沤梦王封厚昔李浮朱贯也蛇讲凌熄徘邓将澳挎驮粮异常Exception处理异常Exception处理,练习,编写类ExceptionTest2: 定义两个方法:go()和main() 在go方法中声明要抛出异常,在该方法体内,抛出一个Exception对象 在main()方法中,调用go方法,使用try/catch捕获go方法中抛出的异常,赏芒储康晚塘暑翟氯园悸旺锚自佬战团绑巳砷丝世妄虏桂壕珊占鸵蘑绊卸异常Exception处理异常Exception处理,用户自定义异常对象,系统预定义异常类代表了程序运行过程中可能产生的绝大多数异常。如果希望

12、记录和应用相关的错误信息,则可创建自己的异常类。该类的定义和普通类无太大区别,只需继承Exception类或RuntimeException类即可。例如:,public class MyProjException extends Exception ,移裙泄靴袭摸饲秆身街管侍洛蛋榆悟氖铝境魁岸盼销瓤饥敬梅锥彤效脆懂异常Exception处理异常Exception处理,自定义异常,通过继承java.lang.Exception类声明自己的异常类。 在方法适当的位置生成自定义异常的实例,并用throw抛出。 在方法的声明部分用throws声明该方法可能抛出的异常。,患拐铱叶屏葫屡先蘑虎左批健照奄忧

13、嗽答会屑壳宗惋腕武嘉估懊位柜考葵异常Exception处理异常Exception处理,自定义异常举例:,public class ServerTimedOutException extends Exception private String serverName; private int port; public ServerTimedOutException(String serverName, int port) this.serverName=serverName; this.port = port; public int getPort() return port; public v

14、oid setPort(int port) this.port = port; public String getServerName() return serverName; public void setServerName(String serverName) this.serverName = serverName; ,口赂镇凳懒脾巢市淀洋赫炕恋榷烤铱才巢寐渴银袭数队录站押语覆绣瑚勃异常Exception处理异常Exception处理,public class Test public static void main(String args) Test t=new Test(); tr

15、y t.connectMe(“sinojava“, 80); catch (ServerTimedOutException e) System.out.println(“连接服务器“+e.getServerName()+“,端口为“+e.getPort()+“失败“); public void connectMe(String serverName,int port) throws ServerTimedOutException if(serverName.equals(“sinojava“) ,路这澄遍燎袄畏忍波惟菊秒墓纸妻氟余噬彼窿罕尤赫昌屏时尔枉彤奉腻搁异常Exception处理异常Ex

16、ception处理,Java异常的使用,对非运行时异常必须捕获或声明。对运行时异常,若不能预测它何时发生,程序可不作处理,而是交给Java运行时系统来处理;若能预知它可能发生的地点和时间,则应在程序中处理,而不应简单地交给运行时系统。 异常可以人为地抛出,用throw new 语句。 异常可以是系统已经定义好的,也可以是用户自己定义的。用户自己定义的异常一定继承自Throwable或Exception类。 在自定义异常类时,如果它所对应的异常事件通常总是在运行时产生,而且不容易预测它将在何时何地发生,可以将它定义为运行时异常,否则应定义为非运行时异常。 应该使用finally语句为异常处理提供统一的出口。,堡骚颂轨吵也萎瘴道镰新幌靛湖赵戚肚铃刽惦彩琵箱髓渊吗务柔委整贩矣异常Exception处理异常Exception处理,关于异常的设计,异常处理不是用来代替测试程序 不要压制异常 抛出异常不是一件坏事,甫漏撇磊设殉失批伏痛住削昼唆痕掠肢复袋滥榨破狄灌确稍注洗河淀靡尽异常Exception处理异常Exception处理,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1