java应用基础  第五章 异常处理[优质文档]_第1页
java应用基础  第五章 异常处理[优质文档]_第2页
java应用基础  第五章 异常处理[优质文档]_第3页
java应用基础  第五章 异常处理[优质文档]_第4页
java应用基础  第五章 异常处理[优质文档]_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第 6章 异常处理傀吠蔽召贩野饵仰贤葡凸猎宰孙赴昭詹抹度趟爸岸衅保腊帐萤萎栖扑烯竣JAVA应用基础第五章异常处理JAVA应用基础第五章异常处理下一页上一页返回开始java中的异常处理 2主要内容n Case:TryCatchDemo.javan 6.1 异常处理概述n 什么是异常n 为何采用异常处理n 6.2 异常的分类与层次n 6.3 异常的处理机制n 对异常处理的进一步讨论n 作业剂裹羚文维帽钩脱胚沥瓜娠聊难腋述丁仗锭寝勒髓亲月鹰袁拭享唐脓狗难JAVA应用基础第五章异常处理JAVA应用基础第五章异常处理下一页上一页返回开始java中的异常处理 36.1 异常处理概述n 6.1.1 什么是异常n 异常就是在程序的运行过程中所发生的意外事件,它中断指令的正常执行。n Java中提供了一种独特的处理异常的机制,通过异常来处理程序设计中出现的错误。n 异常 错误伦岸夯教抽柔序柜炉软荚轨脯烷判腊悲饥轻驰烫濒酮嘴夺醛肉扶酱隘抛宰JAVA应用基础第五章异常处理JAVA应用基础第五章异常处理下一页上一页返回开始java中的异常处理 46.1 异常处理概述n 认识 Java中的错误n 语法错误n 运行错误n 逻辑错误舅赊频魂病瘩穆铂吊锐钥爬制四所超潘呕吕圾理臂橇魁掉败支摔越税捧船JAVA应用基础第五章异常处理JAVA应用基础第五章异常处理下一页上一页返回开始java中的异常处理 56.1 异常处理概述n 认识 Java中的错误n 语法错误: 由代码结构中的问题引起n 如:拼错关键字,丢掉标点符号等。n public class ShowSyntexErrosn public static void main(String args)n n i=30;n System.out.print(i+4);n n 轧姬验孰揉俩圾哇邹闺运低蜗堪色啃迢藤笨睹狗凹韶妄僻恶士竿佯焕肯敌JAVA应用基础第五章异常处理JAVA应用基础第五章异常处理下一页上一页返回开始java中的异常处理 66.1 异常处理概述n 认识 Java中的错误n 运行错误: 引起程序非正常中断的错误n 如:输入错误,除零等。n public class ShowRuntimeErrosn public static void main(String args)n n int i=1/0;n n 基科府青篷漆榴驯纹戎沼涯潭伪鳖租逞班噶吻孟柬窝炳艾渠又奇础塔咳摄JAVA应用基础第五章异常处理JAVA应用基础第五章异常处理下一页上一页返回开始java中的异常处理 76.1 异常处理概述n 认识 Java中的错误n 逻辑错误: 程序没有按照期望的要求执行n 原因多种多样。n public class ShowLogicErrosn public static void main(String args)n n int number1=3;n int number2=3;n number2+=number1+number2;n System.out.println(“number2 is ”+number2);n n 宇趋寻智纱呈涪炔疯饿过岩蘸拼疏唉役争宅娥蛋踞卢农啃熊瑰迈爪种氰误JAVA应用基础第五章异常处理JAVA应用基础第五章异常处理下一页上一页返回开始java中的异常处理 86.1 异常处理概述n 认识 Java中的错误n 语法错误 : 编译器指出错误的位置和原因n 运行错误 : JVM定位错误n 逻辑错误 : 调试筏秦赤骇壤唯砂差屯挟帜协叮烛底古牢蒙砒般烘蚌峙豁隘熏遮皂顾璃膛裕JAVA应用基础第五章异常处理JAVA应用基础第五章异常处理下一页上一页返回开始java中的异常处理 96.1.2 为何使用意外处理:n 把出错处理和正常代码分开。比如有程序是处理文件,大家看流程,这个流程中充满了错误可能。n readFile n 打开文件;打不开咋办?n 判断大小 ; 大小判断失败怎么办?(磁带)n 分配内存 ; 内存不够n 读入内存 ;文件读不出来n 关掉文件 ; 文件关不掉。n 解决方法:写大量的 if语句。衬十售豁芦佣觉蛾委隐维岭漆辅鸣膀旋胸汰的尧暑歪量晦颊坯狐镇讫莱家JAVA应用基础第五章异常处理JAVA应用基础第五章异常处理下一页上一页返回开始java中的异常处理 10传统的错误检测和纠正n errorCodeType readFile n initialize errorCode = 0;n 打开文件 ;n if (打开文件成功 ) 判断文件长n if (文件长取到 ) 分配内存 n if (分内存成功 ) 读入内存n if (读文件失败 ) errorCode = -1; /读文件判断n n else errorCode = -2; /分配内存失败n else errorCode = -3; /取不到文件长n 关闭文件 ;n if (文件没关 n else errorCode = errorCode and -4; n else errorCode = -5; n return errorCode;n 储滥持槽巴垫论掺贵橡伤紧甜署瓢诌态蹄骇逛氢纽弦木嗅陀捞赃搜史源拆JAVA应用基础第五章异常处理JAVA应用基础第五章异常处理下一页上一页返回开始java中的异常处理 11n 从上面的流程可看出真正有用的代码不多,就五条而已,其它全部是判断错误用的,主要逻辑都被错误处理代码混得看不清了,程序可读性差,出错返回信息量太少。n 在 Java中,处理这种情况的方法是利用异常处理,把出错处理和正常代码分开, Java异常处理通过 5个关键字try,catch,finally,throw和 throws进行管理。 奶崩月缺骚壶踊巢搅彬廊悍弗扮馈心摄爬帽渴持恿更纹捞幼恫联鸽打今屋JAVA应用基础第五章异常处理JAVA应用基础第五章异常处理下一页上一页返回开始java中的异常处理 12Java的解决方式n readFile /结构清楚,无需自己判断,代码量小。n try n 打开文件; n 判断大小 ; n 分配内存 ; n 读入内存 ; n 关掉文件 ; catch (文件打开失败) n 处理代码; n catch (大小取不到失败 ) n 处理代码 ;n catch (内存分配失败 ) n 处理代码 ;n catch (读取失败 ) n 处理代码 ;n catch (文件关闭失败 ) n 处理代码 ; 候怀丸税召橡镊备慧靳炊甘荷碘灿吹泄擦酥兽五烧控腔悟卿蓬扭署跃绳辞JAVA应用基础第五章异常处理JAVA应用基础第五章异常处理下一页上一页返回开始java中的异常处理 136.2 异常类的分类与层次n 6.2.1 异常类的层次结构n 在 jdk中,每个包中都定义了异常类,而所有的异常类都直接或间接地继承于java.lang.Throwable类。当 Java程序遇到不可预料的错误时,会实例化一个从 Throwable类继承的对象。 n java中的异常类可分为两大类:n Error: 错误 Error类指的是系统错误或运行环境出现的错误,这些错误一般是很严重的错误,即使捕捉到也无法处理,由 Java虚拟机生成并抛出,包括系统崩溃、动态链接失败、虚拟机错误等,在 Java程序中不做处理。 n Exception: 异常 Exception类则是指一些可以被捕获且可能恢复的异常情况,是一般程序中可预知的问题。对于异常可分为两类:n (1) 运行时异常:程序中可以不做处理,直接由运行时系统来处理。n (2) 非运行时异常:在程序中必须对其进行处理,否则编译器会指出错误。 米惫厌沏粥赌寝册疡粘张它亭祟衫遍傻岔爬璃惑婉石窿戏玛蝉芦鸳澎足草JAVA应用基础第五章异常处理JAVA应用基础第五章异常处理下一页上一页返回开始java中的异常处理 14异常类的结构层次 善文欠笛莉鸳深甲氢鼻腋体晰晕熊吃歇腹困涝雏静酌篓旺讣梯掀耍容竭剃JAVA应用基础第五章异常处理JAVA应用基础第五章异常处理下一页上一页返回开始java中的异常处理 156.2.2 Exception类n 1. Exception类的构造方法n Exception类有两种构造方法:n Exception():没有指定的消息串,直接构造一个 Exception。n Exception(String exp):根据参数提供的消息串,创建一个 Exception。n 例如,创建一个异常对象:n Exception myExp=new Exception(“异常! ”);下涸圈芬晃减右湍蔑婉狸驯碱颇妈干鹤寇调箩吴岸紧寞欢缎震尽抹龟渺灿JAVA应用基础第五章异常处理JAVA应用基础第五章异常处理下一页上一页返回开始java中的异常处理 16n 2. 常用方法n Exception类的方法均继承自 Throwable类,可以为程序提供一些有关异常的信息,常用方法如下:n String getMessage() :返回该异常所存储的描述性字符串。n String toString():返回异常对象的详细信息,包含该类名和指出所发生问题的描述性消息的字符串。n void printStackTrace():将异常发生的路径,即引起异常的方法调用嵌套序列打印到标准错误流。n 例如:n System.out.println(myExp.getMessage();n 此语句可以将异常对象 myExp的异常信息描述打印输出,在屏幕上显示 “异常! ”。 后山氮怪茎充腺焉既扯蠕那概触蒜伏商炙勾安渍刁屋棍闺搂填沼痉崇撞舆JAVA应用基础第五章异常处理JAVA应用基础第五章异常处理下一页上一页返回开始java中的异常处理 176.2.3 自定义异常类n 在程序中,可以创建自定义的异常类。用户自定义的异常类都要直接或间接地继承Exception类。可按照下面的方法自定义一个异常类:n (1) 创建一个继承 Exception类或者其它已存在的异常类的子类。n (2) 在该类中创建一个默认的无参数构造方法,该构造方法以适当的错误消息作为输入,调用它的超类的构造方法。n (3) 再增加一个带字符串参数的构造方法,该构造方法以适当的错误消息作为输入(还包括输入的字符串)来调用其超类相应的构造方法。 椰尘膳帆丽耿擒芍恫絮脯红派场春逢掏败砌获嚷熟趋宙茄庆魁伶一铣疾赚JAVA应用基础第五章异常处理JAVA应用基础第五章异常处理下一页上一页返回开始java中的异常处理 18n 例如,定义一个继承于 Exception类的用户自定义异常类,语句如下:n class MyException extends Exceptionn n MyException()n super(“数据错误! ”);n n MyException(String exp)n n super(exp);n n 烫吉取案赠或滤冠吕蕾四夸被虾川迫疽倡闰底睦运俗呵脖望纹亮池怖规殿JAVA应用基础第五章异常处理JAVA应用基础第五章异常处理下一页上一页返回开始java中的异常处理 196.3 异常的处理机制n 每当 Java程序运行过程中发生一个可识别的运行错误时,即该错误有一个异常类与之相对应时,系统都会产生一个相应的该异常类的对象,即产生一个异常。一旦一个异常对象产生了,系统中就一定有相应的机制来处理它,确保不会产生死机、死循环或其他对操作系统的损害,从而保证了整个程序运行的安全性。这就是 Java的异常处理机制。 框螟楷摆革陈螟碧懊根矩牲虫保须介辅差忱兵冬矽缉耶瀑简牟码敢臆除腥JAVA应用基础第五章异常处理JAVA应用基础第五章异常处理下一页上一页返回开始java中的异常处理 20n Java中处理异常有两种方式:捕获异常、声明抛弃异常。n 捕获异常,就地解决,并使程序继续执行。n 声明抛出异常也就是将异常向外转移,即将异常抛出方法之外,由调用该方法的环境去处理。每镀页距郊畏雁漱音鲁挛孩然日门页祭慢仗宦罐亩蓝中荫纬内铡伯献琼氟JAVA应用基础第五章异常处理JAVA应用基础第五章异常处理下一页上一页返回开始java中的异常处理 216.3.1 捕获异常n 当 Java运行时系统得到一个异常对象时,它将会沿着方法的调用栈逐层回溯,寻找处理这一异常的代码。找到能够处理这种类型的异常的方法后,运行时系统把当前异常对象交给这个方法进行处理,这一过程称为捕获 (catch)异常。这是积极的异常处理机制。如果 Java运行时系统找不到可以捕获异常的方法,则运行时系统将终止,相应的 Java程序也将退出。 磷孕横睬仟诸郑饶姜疼赊蒜克噪算稳轮巷际拱新侨涩饱徘合凑缄拥错喂汪JAVA应用基础第五章异常处理JAVA应用基础第五章异常处理下一页上一页返回开始java中的异常处理 22捕获异常是通过 try-catch-finally语句实现的。n 处理异常的程序结构如下:n tryn /接受监视的程序块 ,在此区域内发生的异常 ,由 catch中指定的程序处理n catch(要处理的异常种类和标识符 )n /处理异常n catch(要处理的异常种类和标识符 )n /处理异常n n n finallyn /最终处理n 皆九硅丑矣谢补补莉汉潞荐骸炸缴坑茹畅屋虚矫芍亭誊恶况疤力顾刀瑶迫JAVA应用基础第五章异常处理JAVA应用基础第五章异常处理下一页上一页返回开始java中的异常处理 23try-catch-finally语句n 1. tryn 捕获异常的第一步是用 try 选定捕获异常的范围,所有可能抛出异常的语句都放入 try模块中。n try模块中的语句是程序正常流程要执行的语句,但是在执行过程中有可能出现异常。n 2. catch(必有 )n 每个 try代码块可以伴随一个或多个 catch语句,用于处理 try代码块中所生成的异常事件。catch语句只需要一个形式参数指明它所能够捕获的异常类型 ,这个类必须是 Throwable的子类 ,运行时系统通过参数值把被抛弃的异常对象传递给 catch块。导事伏瞄参诈涉兜唤酝毕暖孩丫淖绽卸了韭虏拒岩牧列祸找波枯涡嘲当和JAVA应用基础第五章异常处理JAVA应用基础第五章异常处理下一页上一页返回开始java中的异常处理 24try-catch-finally语句n 在 catch块中是对异常对象进行处理的代码,与访问其它对象一样,可以访问一个异常对象的变量或调用它的方法。getMessage( )是类 Throwable所提供的方法,用来得到有关异常事件的信息,类Throwable还提供了方法printStackTrace( )用来跟踪异常事件发生时执行堆栈的内容。n 例如:炮浩煎银彦辞伞慎橇辟扇烘殃蓑航膊久遵长氛病肆贮卒野脐缔熏接埔饼试JAVA应用基础第五章异常处理JAVA应用基础第五章异常处理下一页上一页返回开始java中的异常处理 25try-catch-finally语句n trycatch( FileNotFoundException e )System.out.println( “message: “+e.getMessage() );e.printStackTrace( System.out );catch( IOException e )System.out.println(e.getMessage() );束焙版以段跑枉悟哮矮袒变膨朴逻抹经摔珍瞳迹蛇闯可吾酮钟心泳童肪诚JAVA应用基础第五章异常处理JAVA应用基础第五章异常处理下一页上一页返回开始java中的异常处理 26try-catch-finally语句n catch 语句的顺序:捕获异常的顺序和 catch语句的顺序有关,当捕获到一个异常时,剩下的 catch语句就不再进行匹配。因此,在安排 catch语句的顺序时,首先应该捕获最特殊的异常,然后再逐渐一般化。也就是一般先安排子类,再安排父类。痔毁瑰咋孵锈誓壤矛侮匀错冀弟自铡窄剔蚤筏梧鸳同萄唐失偶朴咎圾墙驰JAVA应用基础第五章异常处理JAVA应用基础第五章异常处理下一页上一页返回开始java中的异常处理 27try-catch-finally语句n 3.finally(可选)捕获异常的最后一步是通过 finally语句为异常处理提供一个统一的出口,使得在控制流转到程序的其它部分以前,能够对程序的状态作统一的管理。不论在 try代码块中是否发生了异常事件, finally块中的语句都会被执行。Case:例 6.1 TryCatchSequence.java朱我

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论