java第5章异常(精)_第1页
java第5章异常(精)_第2页
java第5章异常(精)_第3页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

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

文档简介

1、第5章异常5-1 Jaw异常的概念介绍Ja旧中异常处理(Exception) 的使用方法启5J Jam异常概念5.2 Java异常的分类5.3异常的捕获和处理5.4自定义异常御异常是山也提供的用于处理粽序中错课 的一种机制。异常是指程序远行过程中岀现的非正常现象.异常处理机制是用来处理程序错误的有效机 制.以往需要由程序员完成的程序岀错情况 判别.在山泊中改为由系统承当。通过系统 抛出的异常,程序可以很容易地捕荻并处理 发生的异常情况5.1 Jr*北异常的概念所苗構误星指在程序运行的过程中岌生的一些畀當乐件如- 除0溢出.数组不标強界所要读取的文件不有鮎.-设讨貝好逊稈序应该衽异鸞发生时握供处

2、理迪些啊的方楚, K: 'J程浮不会因为异竜的雄生而阻断或产生不可阴见的结果X拋出异常;JavaJES规定的;当语义限制被违反时.将 会抛出(throw异常,腳产生一个异常事件,生成一令异常 対孰 并把它握査给适行蕨统.再由运行贏统寻找相盛的代 码来处理异當 一个异當对象可収由Java拟机来甘动产雯. 也可以由运拧的方注生成异常对缜中包含了异常聿件类型、 程瘵运行狀态籌龙要倩患.)pub lie W4 BcaciMsHfli tlliEXl () Lti-ruwa Subs£kb LJLuii i£ t isaia&C ond.±t ±o

3、n (1 >t h rwr he Srroe-F.Ipn (比 仪 | 110 '* I am n hwitty I> MnuJ4«kt hod (| ;I ratr h (smwFwnftpr i"痒盗射讯代別5-1血阳异常的概念Public class Test(public static void m ain(String argsO(Ini a= 1,2,3:System qut.print1n(4*S:h如也L<-1fcP5*ft51庙圖谊htherrif«KfTJ2.处理异常;异常抽出后,运行时系统从生咸异常对猱的代 码开始*

4、沿方法的调用栈进行童找,直到找到包含幅应it理 的方法企码.井把异常対象交给该方法为止.这个过程称为 捕發catch异當 或声明抛弄异當5.2 Jimi异常的分类urjiJ: 1 r5-2矗竹异常的分类 r si. iiIEj ppH 九Cntm 官監包4耳鼻百中pti-VPRun t i.mi Mike* i«n1 JlrithMit.iatxatptLn Nu 1 IFoint.«rEroepucn I nd*«aiAaftoijn4BEx<Hpt4 « A±ro irt 丄tiJ.Q-d iGlfB jUhd SEa 匚uptliu

5、n S tJC i TIC: 1 r. deMOutOiJ HfEnxrid=.£ xu?=p t jlotl . _''bjact* Jam中的异常类具有层次结构俎织, 如下图。KimfimrKcrpIhinIl >liirrpriiina11Error:称为错渓.由虫旳虚拟机主成井哋乩包播动态链按失败L虚拟机措误等程序对其革做处理匚也池理不了 kEKceptior:所荷异糟宾的父类.JI子类对应了各种各样可能出现 料呉常事件.一覩需要用户忍銀显武地声明抛出或擱获.Runtim吐迩卯帕匕一类特抽异常.如玻0除塾组下标越界零 I其产生比壮嚣気 处理癖烦如果显式的

6、声明或捕获烬会对程序司 愤性和运行效率厳响很大 网此由系氓自动杭测井将它们査给戢省的 尿:常处理程序:用户可不必討珂性理,r Exception异常类的子类(2>(1) RuntimeException运行时异常类 NoSuchMethod Exception方法未找到异常 j ava, a wt. AW T E xc ept io n ® 形界面异常类 输入输出异常类 Exception异常类的苴它子类5.2矗阳异常的分类5.2 Ju宿异常的分类主1) RuntimeExcsption类主要包括以下异常子类;AMhm电也EM电ption真术异常类;表示遇到了异常的訐术间 翹.

7、制如披0整除。Array StoreExceptionftti存储异常类:试图把与數组类型不 相符的值存人数纽.Clas&CastException?制转換异重类:试图把一个对象 的引用强制转换为不适宜的类型Ind&xOutOfBoundsExcepiionT探越畀异第类:下标越畀 -NullPointerExceptian空指针异It类试IB使用一个空的对象 引用n"SECirityE犹印tiori违誉平安原那么异轉奏:检测到了违反S全 的行为.5.2 Java异常的分类4) java.io,lOException类的子类有;do Exception :申请&quo

8、t;0換作没有正常宪成。EOFException:在输入操作正常结束前遇到了文件结 束符。FileNotFoundException:在文件系统中.没有找到由 文件名宇符串指定的立件。IW5.2品阳异常的分类1Exception异常类的其它子类: EmptyStackEcception:试图访问一个空堆栈中的元恚jNoSuahFieldException:试图谊问一个不存在的域 NoSuchMethodException:试图访问不存在的方;去 ClassNotFoundExceplion;具有指定容字的类或接口没 有被发现。CloneNotSupponedException:克K 个没有实理

9、 Cloneable?S 口的类“HI legal AccessExceptiort:试图用给岀了完整的路径信息 诵字符串加载一个类。-1 nstarttiation Except ion ;试图使用Class的 n 巳wlnstanue 方法创立一个实例。dnlerruptedException:当前前线理正在等特,而另一不 线程便用TThreadinterrupt方法中断了当前袋卷 5.3异常的捕获和处理异常处理诸句格式为:尸代码段包含可能产生异常的 lry找码."可能拋岀异常的语旬> My代码段后踉有-乍或多个 catch 异常类型对倜环代码段>每个catch代码段

10、声明其能处理的一种特定类型前异常井提俱catch併常SSi*l处理的方法.i>当异常发生时程序会终止当'前的流程.根据蘸取异當的类甘站型去执行相应的catchR码段>FinallyM代码无论是否发生"最绻处理异常都育执行*士 父携异常的捕获谓旬不可以写在子类畀埔捕茯谱甸的上面.仝©I 53异常的捕获和处理Uy 出 轲£卜賂甸描底了一民典爲谀段牝巧就是一战捕欷井处理恻外的范围. 在钛甲了扯稈中.谨復代晞可能台广牛并出旳-种理,几严沓邛的捽同冷偸, 它品面恤tcb诉旬那卧别対试胖舁常敕相屁附就理 拗黑应有*W产生.耐的Ntchft韬趾砒略过不1MT

11、.uNtuh语如扛ech话荀*卜启対畀篇遇杠址诈的伏碎,祁个by语旬块列规廿轴一督 簸茬化?en语旬用十处踝出据产牛的用同刑的井鬲对尊.H catch中声圈的舁常斟眾ctch SomaException s> > X輩H常* 昔眾左的値41 catch»旬牍咿可琐住用遠牛刮挈ffi聪方谨MdA趣苗 总"粧如,燼口狀卅$弓&站削J Aft,坤畫槽州也X弃苛禅的他§® printStJtkrr力潼+川水用总异京和址|.料拉打 堆松那么曲怖- finiry Yii-J finally汹3片舁常处理提供 牛豐 牺出口* ttflftteMMW

12、KtilWJF的 盛品好以1T 腌*討砂 的伏总世輩 訓醫輝 JLE/HrJRj的典冉堆中証曲址已制蚪.冃2血所們“的代趴播丛聊4Mt. 重當充"nallyifr旬审可EbSti奮iW的诗际I杵-如,瑕內打1的尢竹母例5.1便用try询ch语句处理异常的过程。public class Test public static void main(String args) int n=0.m=0?t555;try m=lntegerparselnt(*6988ri); n=l nteg e 匚 par$elnt(Ha be789;"9999;calchtNumberFofmatE

13、xception e) Systemwt.printin(*K生异常:"+e-getMessa-ge(); e.printStackTraceO;n-123;S/stein,out-pnntln ("n"+n+m ="+m+;例52使用心加tch语句处理异常的过程。运 行结果如下图:pubhc sialic void main(String arg3System, out.printlnf'是一军异常址理的例尹VT): tryinti=1O;final lySystem .o u I. printlnf "finally 语句被执行&q

14、uot;7;caieh (Arithmetic Except ion e) System.o u t. print Inf's 常是:1 'e.getMessag eQ);i/=0;例5.3 *个BMh子句的异常处理°运行结果如 图所示"public cl ass TC3public static void main(3tring args)(*rv(int a=args电 ngth;Systern.out.printtnCna = %a);int b=42a;伯 t c=(t;c|42=99;catch (ArithmeticSytem.outprintl

15、 catch (ArraylndexlSystem.oul. print!piMauixtlf>JiuaE:唯血呦1CJ2T A -1 I.( ri.tkrtlitExinjtlcfl: / by itriH121例54使用trystch语旬处理异常的过17 4Publicclass Testpublic static void mainfString argsUf FileEnputStream iwnuU; try(innew F il elnputStream (Hmyli le. txF); int b;bdn4read(); whiie(bf=-iHtinaUy try )ca

16、tch(FileMotFoundExcepttoneH t -closed; e.prifitStackTraceO; catch(10Ex«pttcn &H1 catchOOEMception e)(e.printStackTraw(>Sys tem.outpr intln(e .get Mes&a g 金;JSystem.oiiL p nntln(char)b); b=in.readO: thro w语句楮式为匸<throw> bewa崛异常对象名A;程序会在Virovv语句处立即终止*转向 trycatch寻找异常处理方法,不再执行 throw

17、后面的语句。不面的例子中使用了 throw语句主动抛出一个异常口例5.5 throw识fU的使用运行结果如下图审publicclassTC& staticvoid throwProc«ss()( try thrownevtf NullPoiriterExcqitionflgW椚;catch (HullPointerExceptioneH-誥牛霍示科E 5SJjavac TC5 , J.vAJe: XjfiyavEjavd TC5亡thyi«Pmc4sr方洁當抽底个空鹘常异常再衣捕辰| J*ua-larig.NullftjLnt*pEKcepiijin:空狷针昇空E

18、;j丹玄進产>*1publicIhrawe: 1System q ut.printlnCVt在 th rwft oc-es$ 方法中捕 ffi 介虫.ggWQ&sa少(力;2声明抛弃例外throws子句 throws用来说明一个方法中可能抛出的各种 异常,并说明该方法会抛出异常但不捕获的 异常。如果想明确抛出一个Ru ntimeE xception或 自定义异常类,就必须在方法的声明语句中 用throws子句来说明它的类型以便通知调 用其的方法准备捕获它.*理欝翳两个方法来分飙理抛出乙声明拋弃例外.throve子句 1.抛出异常的方法在抛出异常的方法中要歿用throws/旬,th

19、rows子 句的格式为:咗返回值类型"方法名严【参数Dxthrows*舁常 类型M2.主调用方法处理异常主谓方法可以处理,也可以继续拋出.让上一级来 处理。X写方法需娶抛出与原方法所拋出异常类型-致异常或不地出异常*catcfSys例疔.6t hrows语£ ij的便用.运行结果411图所示0class TC6$1atlcvcidmafhod0System-out.prifitl在 rnathod 中撇出一个异常十 1hraw new IliealAccessExceptionO;public staiic void mainfStrlrig args) malhodO;2

20、 声明抛弃例外.throws子句rvmJFU»4 1J(JH4e|inn»:iiiHhndl 11mm、 rndHIr)nirlhiHlI ( J合谊例外种类的例外 处理理儿|i uldiL “wL耐 tiiiL nJ忙1nKihiidl i j;c JriL ii(K )F&epdLfii e J._. |Wlj> Javaiftf?,外处理 机制變得制外事牛. 皓着被嗚用的顺序柱2声明拋弃例外throws子句£ s racEa cep t ion i S*=HneEaccjalLl.an cie; 口lie in mth口 8 at lav t

21、iinethQdJ llen. j « va; 11* at ?«Et.mtliQd2 (TMt;r i iva 14> nt Tea t -nse(Test- j “ *at 5es t. jm dn Te-Bt J w-b : 5 )public &! Tah< l public static rooLd Min (String urgsf | ( 7*001 S七 nmr Top.七 i try <tret .mthodl ():) c latch f &口rtEEz.匚=口匕丄口门 e J f r printfK'k?首帚电

22、fpubllo mid nebhodl thrsviWJ j jpuk>Jj±c ?ai.d iM t.hc3-d!2 ()thxaMs SciitE BxcicpLisffi C ise the d3 £) j p*bldbC voidt)曽血*4©昨拿thrw nt*C "-SlQmffr c<pt icHi occur in inBtlwd3" 1 ;£4自定义异常类自定义异常类的格式:<class> <自定义异常名a <extends><Exception> .说明二LU过

23、继承ExceptionBg自己的异常类. Z在方法适当的位生成自定义异常的实刮,井用 throwiB句抛出°3-在方法的沖明局部用throws语句声明该方法可能抛 出的异常.class MyException extends Exception private int x;MyException(inta) x=a;public String toStringO return "MyException"1public ciass TC8 static void mathod(int a) throws MyException (/ 声明方法会WiHi MyExce

24、ptionSystem.out.printlnf*t 此处引用 mat hodr+a+,)H);If (a>10) throw new MyExceptionfa; H 主动拋出 MyExceptionpublic static void mainfString ars| try Srn;out.priminr>n进入监控血执行可能发主异常的mathod(a);mathDd(20);mathod(6);Sy$tem.ouLprinlln(t1lE 常返回J;e 一个宙异摒和拆肓的关寓S 习题1 在onelthodO方法运行正常的懵况下程序 朕将输出什么? public void test() try oneMethod();System.ou Imprint Inf condition 1W); catch .ArrayIndexOutOfBoundsExGeptian e) System.out.printlnf'condition 211); catch (Exception e)S yste m. o ut. printin (wco nd it io n 3"); finally System-outprintlnCfinally;2.下而的程序有何错误?fi

温馨提示

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

最新文档

评论

0/150

提交评论