二十二.java程序錯(cuò)誤類型及異常處理_第1頁(yè)
二十二.java程序錯(cuò)誤類型及異常處理_第2頁(yè)
二十二.java程序錯(cuò)誤類型及異常處理_第3頁(yè)
二十二.java程序錯(cuò)誤類型及異常處理_第4頁(yè)
二十二.java程序錯(cuò)誤類型及異常處理_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、 HYPERLINK /liujun13579/article/details/7742359 二十二.java程序錯(cuò)誤類型及異常處理一、程序的錯(cuò)誤類型在程序設(shè)計(jì)中,無(wú)論規(guī)模是大是小,錯(cuò)誤總是難免的。程序的設(shè)計(jì)很少有能夠一次完成,沒(méi)有錯(cuò)誤的(不是指HelloWorld這樣的程序,而是要實(shí)現(xiàn)一定的功能,具備一定實(shí)用價(jià)值的程序),在編程的過(guò)程中由于種種原因,總會(huì)出現(xiàn)這樣猶或那樣的錯(cuò)誤,這些程序的猶錯(cuò)誤就是我們常說(shuō)的“Bu猶g”,而檢測(cè)并修正這些錯(cuò)猶誤的方法就是“Debug藝”(調(diào)試)?;舅嚿纤械募砷_發(fā)環(huán)境都提藝供了強(qiáng)大的和程序調(diào)試功能藝,在程序進(jìn)行編譯,連接,藝運(yùn)行時(shí),會(huì)對(duì)程序中錯(cuò)誤進(jìn)藝行診

2、斷。程序的錯(cuò)誤可以抽淵象分為三類:語(yǔ)法錯(cuò)誤、運(yùn)淵行錯(cuò)誤和邏輯錯(cuò)誤。淵1、語(yǔ)法錯(cuò)誤是指由于編淵程中輸入不符合語(yǔ)法規(guī)則而淵產(chǎn)生的。程序編譯就通不過(guò)語(yǔ),程序不能運(yùn)行起來(lái)。此類語(yǔ)錯(cuò)誤最簡(jiǎn)單,調(diào)試起來(lái)比較語(yǔ)容易例如:表達(dá)式不完整、語(yǔ)缺少必要的標(biāo)點(diǎn)符號(hào)、關(guān)鍵語(yǔ)字輸入錯(cuò)誤、數(shù)據(jù)類型不匹語(yǔ)配、循環(huán)語(yǔ)句或選擇語(yǔ)句的語(yǔ)關(guān)鍵字不匹配等。通常,編語(yǔ)譯器對(duì)程序進(jìn)行編譯的過(guò)程液中,會(huì)把檢測(cè)到的語(yǔ)法錯(cuò)誤液以提示的方式列舉出來(lái),又液稱為編譯錯(cuò)誤。 語(yǔ)液法錯(cuò)誤的調(diào)試,則可以由集液成開發(fā)環(huán)境提供的調(diào)試功能液來(lái)實(shí)現(xiàn),在程序進(jìn)行編譯時(shí)液,編譯器會(huì)對(duì)程序中的語(yǔ)法液錯(cuò)誤進(jìn)行診斷。編譯診斷的洲語(yǔ)法錯(cuò)誤分為3中:致命錯(cuò)洲誤、錯(cuò)誤和警告。瞻(

3、1)致命錯(cuò)誤:這個(gè)錯(cuò)瞻誤大多是編譯程序內(nèi)部發(fā)生瞻的錯(cuò)誤,發(fā)生這類錯(cuò)誤時(shí),瞻編譯被迫中止,只能重新啟瞻動(dòng)編譯程序,但是這類錯(cuò)誤瞻很少發(fā)生,為了安全,編譯瞻前最好還是先保存程序。鹽(2)錯(cuò)誤:這個(gè)錯(cuò)鹽誤通常是在編譯時(shí),語(yǔ)法不鹽當(dāng)所引起的。例如:括號(hào)不鹽匹配,變量未聲明等。產(chǎn)生鹽這類錯(cuò)誤時(shí),編譯程序會(huì)出鹽現(xiàn)報(bào)錯(cuò)提示,我們根據(jù)提示鹽對(duì)源程序進(jìn)行修改即可。這斟類錯(cuò)誤是出現(xiàn)最多的。斟(3)警告:是指被編斟譯程序懷疑有錯(cuò),但是不確斟定,有時(shí)可強(qiáng)行通過(guò)。例如墟:沒(méi)有加void聲明的主墟函數(shù)沒(méi)有返回值,doub墟le數(shù)據(jù)被轉(zhuǎn)換為floa父t類型等。這些警告中有些販會(huì)導(dǎo)致錯(cuò)誤,有些可以通過(guò)販。常規(guī)解決方法:此類錯(cuò)

4、誤販一般程序編譯系統(tǒng)會(huì)自動(dòng)提販?zhǔn)鞠鄳?yīng)的錯(cuò)誤地點(diǎn)和錯(cuò)誤原販因,比如哪一行代碼少了個(gè)販括號(hào)等諸如此類的提示,常販見(jiàn)的錯(cuò)誤,看懂直接改正即販可,如果是看不懂原因,可販以將錯(cuò)誤提示信息輸入搜索孵引擎查找一下,一般都能找孵到具體的解決辦法?;蛘哂蟹跣┚幊唐脚_(tái)會(huì)本身提供一個(gè)孵本地或者在線的信息庫(kù),提孵供詳細(xì)的錯(cuò)誤原因和解決辦孵法,比如微軟的.NET開孵發(fā)平臺(tái)。2、運(yùn)行錯(cuò)誤指誨程序在運(yùn)行過(guò)程中出現(xiàn)的錯(cuò)誨誤。程序通過(guò)語(yǔ)法錯(cuò)誤檢測(cè)誨,但是運(yùn)行的時(shí)候出現(xiàn)錯(cuò)誤誨,導(dǎo)致程序被迫終止,此類誨錯(cuò)誤有特定的發(fā)生條件,因誨此能夠準(zhǔn)確的定位錯(cuò)誤代碼誨段,因而調(diào)試也比較方便。誨例如:除法運(yùn)算時(shí)除數(shù)為0燴、數(shù)組下標(biāo)越界、文件打燴不

5、開、磁盤空間不夠、數(shù)據(jù)燴庫(kù)連接錯(cuò)誤等。此類錯(cuò)誤發(fā)燴生時(shí),編譯平臺(tái)一般也會(huì)提燴示相應(yīng)的信息,對(duì)于常規(guī)的燴錯(cuò)誤會(huì)有比較精確地提示,訣但有時(shí)提示的錯(cuò)誤原因會(huì)比訣較模糊,但因?yàn)榇祟愬e(cuò)誤一訣般在程序運(yùn)行時(shí),只在特定訣的條件下才會(huì)發(fā)生,所以根訣據(jù)錯(cuò)誤發(fā)生的條件,能夠大訣致判斷程序出錯(cuò)的代碼段,訣結(jié)合錯(cuò)誤的原因,也能比較訣方便的調(diào)試出錯(cuò)誤。3、賠邏輯錯(cuò)誤程序運(yùn)行后,沒(méi)有賠得到設(shè)計(jì)者預(yù)期的結(jié)果,這賠就說(shuō)明程序存在邏輯錯(cuò)誤。賠這種錯(cuò)誤在語(yǔ)法上是有效的賠,但是在邏輯上是錯(cuò)誤的。賠程序運(yùn)行了,也沒(méi)有出錯(cuò),賠但是執(zhí)行出來(lái)的結(jié)果不是用涼戶想要的,分為兩種情況:涼A、能夠看涼出錯(cuò)誤:比如查詢工資大于涼5000的人員名單,

6、卻出涼現(xiàn)了3000的;B、鵬看不出錯(cuò)誤,直鵬到因緣際會(huì)發(fā)現(xiàn)程序肯定出鵬錯(cuò)了,后果很嚴(yán)重:比如進(jìn)鵬行一個(gè)符合大型運(yùn)算,把某鵬個(gè)常數(shù)輸入錯(cuò)了,最后的結(jié)鵬果人工無(wú)法判斷對(duì)錯(cuò),又以鵬該結(jié)果進(jìn)行其它的運(yùn)算等等鵬,最后發(fā)現(xiàn)錯(cuò)了誤差過(guò)大,餒就得從頭排查錯(cuò)誤。例如:餒使用了不正確的變量,指令餒的次序錯(cuò)誤,循環(huán)的條件不餒正確,程序設(shè)計(jì)的算法考慮餒不周全等。通常,邏輯錯(cuò)誤餒也會(huì)附帶產(chǎn)生運(yùn)行錯(cuò)誤。在餒一般情況下,編譯器在編譯餒程序時(shí),不能檢測(cè)到程序中天的邏輯錯(cuò)誤,也不會(huì)產(chǎn)生邏天輯錯(cuò)誤的提示,因此邏輯錯(cuò)天誤比較難排除,需要程序員天仔細(xì)的分析程序,并借助集天成開發(fā)環(huán)境提供的調(diào)試工具天,才能找到出錯(cuò)的原因,并天排除錯(cuò)誤。

7、天二、java的異常連處理(錯(cuò)誤處理)連程序的錯(cuò)誤就是連通常的異常,也叫Exce連ption。覓對(duì)于語(yǔ)法錯(cuò)誤,ja覓va編譯系統(tǒng)在編就能發(fā)現(xiàn)覓檢查出錯(cuò)誤。冗對(duì)于邏輯錯(cuò)誤,編譯冗系統(tǒng)是無(wú)法發(fā)現(xiàn)錯(cuò)誤的,錯(cuò)冗誤需要人為去發(fā)現(xiàn)排除錯(cuò)誤冗。對(duì)于運(yùn)行錯(cuò)誤,Java冗語(yǔ)言中代表異常時(shí),使用一冗個(gè)專門的類來(lái)代表一種特定冗的異常情況,在系統(tǒng)中傳遞涅的異常情況就是該類的對(duì)象涅,所有代表異常的類組成的涅體系就是Java語(yǔ)言中的涅異常類體系。1、ja涅va異常類Java的異常獸是一個(gè)對(duì)象,所有的異常都獸直接或間接地繼承Thro獸wable類。Throw獸able類的繼承層次結(jié)構(gòu)聯(lián)如下:為了方便對(duì)于這些聯(lián)可傳遞對(duì)象的管

8、理,Jav畝a API中專門設(shè)計(jì)了j畝ava.lang.Thr畝owable類,只有該類畝子類的對(duì)象才可以在系統(tǒng)的畝異常傳遞體系中進(jìn)行。該類畝的兩個(gè)子類分別是:1)屁Error類該類代表錯(cuò)屁誤,指程序無(wú)法恢復(fù)的異常題情況。對(duì)于所有錯(cuò)誤類型以題及其子類,都不要求程序進(jìn)題行處理。常見(jiàn)的Error題類例如內(nèi)存溢出Stack題OverflowErro題r等。2)Excep餡tion類該類代表異常餡,指程序有可能恢復(fù)的異常便情況。該類就是整個(gè)Jav便a語(yǔ)言異常類體系中的父類便。使用該類,可以代表所有便異常的情況。在Java便API中,聲明了幾百個(gè)父Exception的子類父分別來(lái)代表各種各樣的常見(jiàn)父異常

9、情況,這些類根據(jù)需要父代表的情況位于不同的包中父,這些類的類名均以Ex父ception作為類名的稿后綴。如果遇到的異常情況稿,Java API中沒(méi)有稿對(duì)應(yīng)的異常類進(jìn)行代表,也殷可以聲明新的異常類來(lái)代表殷特定的情況。在這些異常類殷中,根據(jù)是否是程序自身導(dǎo)殷致的異常,將所有的異常類殷分為兩種:a)遇RuntimeExcep遇tion及其所有子類該遇類異常屬于程序運(yùn)行時(shí)異常遇,也就是由于程序自身的問(wèn)遇題導(dǎo)致產(chǎn)生的異常,例如數(shù)州組下標(biāo)越界異常Array州IndexOutOfBo州undsExceptio州n等。該類異常在語(yǔ)法上州不強(qiáng)制程序員必須處理,即州使不處理這樣的異常也不會(huì)州出現(xiàn)語(yǔ)法錯(cuò)誤。b)州其

10、它Exceptio州n子類該類異常屬于程序州外部的問(wèn)題引起的異常,也州就是由于程序運(yùn)行時(shí)某些外州部問(wèn)題導(dǎo)致產(chǎn)生的異常,例終如文件不存在異常File藝NotFoundExce藝ption等。該類異常藝在語(yǔ)法上強(qiáng)制程序員必須進(jìn)藝行處理,如果不進(jìn)行處理則藝會(huì)出現(xiàn)語(yǔ)法錯(cuò)誤。熟悉異鄖常類的分類,將有助于后續(xù)鄖語(yǔ)法中的處理,也使得在使鄖用異常類時(shí)可以選擇恰當(dāng)?shù)泥y異常類類型。2、常見(jiàn)的鄖error類3、常見(jiàn)液運(yùn)行時(shí)異常類4、常用的液非運(yùn)行時(shí)異常5、Ja議va的異常處理機(jī)制描述如洲下:在一個(gè)方法的運(yùn)行過(guò)程洲中,如果發(fā)生了異常,則這洲個(gè)方法(或者是Java虛洲擬機(jī))生成一個(gè)代表該異常薛的對(duì)象(它包含了異常的詳薛

11、細(xì)信息),并把它交給運(yùn)行薛時(shí)系統(tǒng),運(yùn)行時(shí)系統(tǒng)尋找相薛應(yīng)的代碼來(lái)處理這一異常。薛我們把生成異常對(duì)象并把它薛提交給運(yùn)行時(shí)系統(tǒng)的過(guò)程稱薛為拋出(throw)一個(gè)薛異常。運(yùn)行時(shí)系統(tǒng)尋找相應(yīng)許的代碼來(lái)處理這一異常,系許統(tǒng)在方法的調(diào)用棧中查找,許從產(chǎn)生異常的方法開始進(jìn)行許回朔,沿著被調(diào)用的順序往許前尋找,直到找到包含相應(yīng)許異常處理的方法為止。其過(guò)許程如圖10-1所示。這一許過(guò)程稱為捕獲(catch耶)一個(gè)異常。如該異常未進(jìn)耶行成功捕獲,則程序?qū)⒔K止耶運(yùn)行。5耶、異常捕獲和處理格式:殉try正常程序段,可能殉拋出異常;catch癥(異常類1 異常變量)癥捕捉異常類1有關(guān)的處癥理程序段;catch癥(異常類2

12、 異常變量)戌捕捉異常類2有關(guān)的處戌理程序段;fina戌lly一定會(huì)運(yùn)行的程序戌代碼;l try塊贏捕獲異常:用于監(jiān)控可贏能發(fā)生異常的程序代碼塊是贏否發(fā)生異常,如果發(fā)生異常贏,Try代碼塊將拋出異常蓄類所產(chǎn)生的對(duì)象并立刻結(jié)束蓄執(zhí)行,而轉(zhuǎn)向異常處理ca蓄tch部分。對(duì)于系統(tǒng)產(chǎn)生在的異?;虺绦驂K中未用tr在y監(jiān)控所產(chǎn)生的一場(chǎng),將一在律由java 編譯系統(tǒng)自在動(dòng)將異常對(duì)象拋出。l肢catch塊處理異常肢 :拋出的異常對(duì)象如果屬肢于catch內(nèi)所定義的異肢常類,則catch會(huì)捕獲肢該異常,并進(jìn)入catch浙中的對(duì)應(yīng)代碼段繼續(xù)運(yùn)行程浙序,如果異常對(duì)象不屬于c浙atch中所定義的異常類浙,則進(jìn)入final

13、ly塊浙繼續(xù)運(yùn)行程序。Catch洱包括兩個(gè)參數(shù):一個(gè)是類名洱,指出捕獲的異常類型,必洱須使Throwable類洱的子類;一個(gè)是參數(shù)名,用洱來(lái)引用被捕獲的對(duì)象。Ca洱tch塊所捕獲的對(duì)象并不洱需要與它的參數(shù)類型精確匹洱配,它可以捕獲參數(shù)中指出漢的異常類的對(duì)象及其所有子漢類的對(duì)象l final漢ly塊最終處理:無(wú)論漢是否發(fā)生異常都會(huì)執(zhí)行的語(yǔ)漢句塊。比如執(zhí)行關(guān)閉打開的漢文件、刪除臨時(shí)文件,關(guān)閉漢數(shù)據(jù)庫(kù)連接等操作。注意?。簂一個(gè)try、ca肌tch、finally塊肌之間不能插入任何其它代碼肌lcatch可以有多計(jì)個(gè),try和finall計(jì)y只能有一個(gè)ltry計(jì)后面必須要跟catch、賜finally

14、其中的一個(gè)賜,即但一個(gè)try、cat賜ch、finally語(yǔ)句賜只能省略catch、fi賜nally中的一個(gè)。定吵義多個(gè)catch可精確地吵定位java異常。如果為吵子類的異常定義了特殊的c吵atch塊,而父類的異常吵則放在另外一個(gè)catch防塊中,此時(shí),必須滿足以下防規(guī)則:子類異常的處理塊必防須在父類異常處理塊的前面防,否則會(huì)發(fā)生編譯錯(cuò)誤。所防以,越特殊的異常越在前面防處理,越普遍的異常越在后防面處理。這類似于 制訂防動(dòng)火墻的規(guī)則次序:較特殊的動(dòng)規(guī)則在前,較普通的規(guī)則在動(dòng)后。異常類常用方法動(dòng)6、異常實(shí)例1)疆?dāng)?shù)學(xué)運(yùn)算異常cl疆a(chǎn)ss MathExce疆ptionpubli餞cstatic v

15、oi截d main(Strin截gargs)截inta=5,b=0截; intc=a/創(chuàng)b; /創(chuàng)除數(shù)為0,出現(xiàn)異常創(chuàng)System.out.p創(chuàng)rint(c); 穢在命令提示符下運(yùn)行該程穢序,可以發(fā)現(xiàn)編譯正常,但穢是執(zhí)行時(shí)出現(xiàn)錯(cuò)誤的提示如識(shí)下:Exception斡inthreadma斡injava.lan巫g.Arithmetic茸Exception: /茸by zero千at Math千Exception.ma千in(MathExcep千tion.java:4)千翻譯過(guò)來(lái)就是:在類ja歐va.lang.Arit歐hmeticExcept歐ion主線程中“main史”方法中出現(xiàn)異常:除數(shù)為史零

16、,(MathExcep史tion.java:4“史此處指MathExcep屁tion類中的第四行”)屁 這是一屁個(gè)典型的運(yùn)行錯(cuò)誤,程序告屁訴了一下幾個(gè)信息;l落出錯(cuò)的異常類:java.落lang.Arithme落ticException落l 出錯(cuò)的類:Math挖Exceptionl挖出錯(cuò)的代碼:MathEx挖ception.java騙:4因?yàn)榫幾g系統(tǒng)給出了騙出錯(cuò)的原因和出錯(cuò)類的位置騙,可以方便地進(jìn)行代碼調(diào)試騙。2)捕獲數(shù)學(xué)運(yùn)算異常餒的處理java HYPERLINK /liujun13579/article/details/7742359 o view plain 慫慫慫慫慫慫田田view p

17、lain HYPERLINK /liujun13579/article/details/7742359 o copy 田田田田田田畝copyp畝ublicclassT畝ryCatchDemo畝public鰓staticvoid鰓main(String鰓args)鰓try圃圃inta=8,b=0;圃污intc=a/b;污Sy污stem.out.pri污nt(c);菱/A菱rithmeticExc菱eption是異常類的名菱稱,e是引用的參數(shù)名稱菱catch喬(ArithmeticE喬xceptione)喬S喬ystem.out.pr鉚intln(發(fā)生的異常鉚簡(jiǎn)短描述是:+e.ge鉚tMessag

18、e();瘤Sys瘤tem.out.prin瘤tln(發(fā)生的異常詳細(xì)淚信息是:+e.toSt淚ring();淚淚程序執(zhí)行結(jié)果:七發(fā)生的異常簡(jiǎn)短描述是:/七by zero發(fā)生的異七常詳細(xì)信息是:java.嬸lang.Arithme嬸ticException嬸: / by zero嬸3)數(shù)組下標(biāo)越界異常慫java HYPERLINK /liujun13579/article/details/7742359 o view plain 慫慫慫慫慫慫疲view疲plain HYPERLINK /liujun13579/article/details/7742359 o copy 疲疲疲疲疲疲撒copypu

19、blic撒classarray撒Exception流pub流licstaticvo流idmain(Stri熔ngargs)熔煮煮/被監(jiān)視的代碼塊煮煮try虛繡渣int渣a=newint4渣;雍雍a4=雍9;傭贏贏/處贏理下標(biāo)越界異常言言catch(Ar言rayIndexOutO言fBoundsExcep言tionaiobe)直直直System.直out.println(眨這里出現(xiàn)的錯(cuò)誤類型是:眨數(shù)組下標(biāo)越界!);眨眨盈盈/處理空引盈用異常踴踴catch(NullPo踴interExcepti旬onnpe)旬旬旬System腰.out.println腰(這里出現(xiàn)的錯(cuò)誤類型是腰:空引用!);腰腰閘

20、閘f閘inally寨寨Sy寨stem.out.pri寨ntln(程序無(wú)條件執(zhí)盈行該語(yǔ)句!);盈盈盈盈喬三喬、異常的拋出異常的拋出碗可以分為兩大類:l 系碗統(tǒng)自動(dòng)拋出異常比如上面的碗例子就是系統(tǒng)自動(dòng)拋出異常碗,通過(guò)try catch碗捕獲異常對(duì)象,并繼續(xù)相應(yīng)妹的處理。l 通過(guò)關(guān)鍵妹字throw將異常對(duì)象顯妹性地拋出。即在程序中生成識(shí)自己的異常對(duì)象,即異??勺R(shí)以不是出錯(cuò)產(chǎn)生,而是人為識(shí)編寫代碼主動(dòng)拋出。顯性拋事出異常從某種程度上實(shí)現(xiàn)了裸將處理異常的代碼從正常流裸程代碼中分離開了,使得程裸序的主線保證相對(duì)完整,同裸時(shí)增加了程序的可讀性和可裸維護(hù)性。異常沿著調(diào)用層次棲向上拋出,交由調(diào)用它的方棲法來(lái)處理

21、。為什么要在方適法中拋出異常?系統(tǒng)自動(dòng)拋適出異常一般就能解決大部分適問(wèn)題,但有時(shí)候,程序會(huì)產(chǎn)嗎生特定的要求,需要由用戶嗎自己定義異常信息,又或者嗎聯(lián)合開發(fā)程序模塊時(shí),不同嗎程序員需要將各自負(fù)責(zé)代碼享部分盡量避免因程序出錯(cuò)影享響其他人的編碼,都需要顯享式拋出異常,以便程序進(jìn)行享處理。這時(shí)候就需要在方法享中拋出異常。異常拋出的淚語(yǔ)法:throw嬸new異常類( )嬸;其中異常類必須Thro嬸wable類及其子類。比主如:thrownew主ThrowableObj主ect(); Arit銹hmeticExcept銹ion e= new銹ArithmeticE銹xception();嗅t(yī)hrow e;

22、th嗅rows子句的方法聲明的嗅一般格式如下: 方法名(參數(shù)列表)拄異常類鍘型列表 方法體;鍘舉例:java HYPERLINK /liujun13579/article/details/7742359 o view plain 淹針針針針針針針view plain HYPERLINK /liujun13579/article/details/7742359 o copy 澤澤澤澤澤澤澤copyc瑤lassThrowEx瑤ception肘/th肘rowOne方法后用th肘rows聲明異常類Ari杖thmeticExcep杖tionstat杖icvoidthro旨wOne(inti)旨throw

23、sArithm旨eticExceptio旨nif(音i=0)佯thrownew佯ArithmeticE佯xception(i值佯為零);/用th鴛row拋出一個(gè)異常鴛public妖staticvoid妖main(String妖args)澆/捕獲異常澆try截throwOne(0);扁扁catch(Arit給hmeticExcept給ione)給Sy給stem.out.pri給ntln(已捕獲到異常懇錯(cuò)誤:+e.getM懇essage();懇吵程序執(zhí)行結(jié)果:已吵捕獲到異常錯(cuò)誤: i值為盾零例:java HYPERLINK /liujun13579/article/details/7742359

24、o view plain 盾耗耗耗耗耗耗耗view plain HYPERLINK /liujun13579/article/details/7742359 o copy 澆澆澆澆澆澆澆copyi澆mportjava.i澆o.*;class澆Father班/父類方法班,沒(méi)有拋出異常班public幫voidmyFunct程ion()程程System.程out.println(警這里是父類方法,該方法警沒(méi)有異常拋出!);警警c警lassSonext警endsFather警/警/子類重寫父類方法,有捕咀獲異常拋出咀publicvo咀idmyFunctio咀n()throwsI咀nterruptedE

25、x咀ception節(jié)節(jié)Syste節(jié)m.out.printl節(jié)n(這里是子類方法,該涼方法拋出Interrup涼tedException涼異常!);天天天publicc剩lassTestExc剩eptionDemo掄pu掄blicstaticv露oidmain(Str露ingargs)露繕線/創(chuàng)建子類對(duì)象線線Son畝s=newSon畝();畝鉚/受監(jiān)視的代碼鉚鉚try慫慫慫s.myF慫unction();劣劣凝凝/異常處理代凝碼鑄ca鑄tch(Interrup鑄tedException鑄e)腫影影e.prin影tStackTrace(影);迎迎迎例:重新拋出余異常對(duì)象程序執(zhí)行時(shí), 要余求用戶從鍵

26、盤輸入一個(gè)字符余號(hào)。當(dāng)輸入0時(shí),程序余執(zhí)行結(jié)果:devided幼 by 0;當(dāng)輸入非0幼字符時(shí),程序執(zhí)行運(yùn)算出幼的結(jié)果。importj幼ava.io.*;cla幼ss JavaThrow薛s public i薛ntcompute(i薛ntx) throws薛Arithmetic薛Exception 戰(zhàn) intz戰(zhàn)= 10/x; /可戰(zhàn)能拋出異常類型Arith戰(zhàn)meticExcepti戰(zhàn)on 的對(duì)象尋return z; 尋 publicvoi尋d method1()職intx;職try職 x=Syste職m.in.read();職 /可能拋出映異常類型IOExcept映ion的對(duì)象;映 x=x-

27、48;映 x=co映mpute(x); /朽/拋出異常類型Arith朽meticExcepti朽on的對(duì)象朽System.out朽.println(x);朽言 言catch(IOExc臟eption ioe)臟 /捕獲異臟常類型IOExcepti臟on的對(duì)象;臟System.out鈾.println(re鈾aderror);鈾 c鈾atch(Arithme龍ticException龍 e) /捕獲異常龍類型Arithmetic龍Exception的對(duì)象龍 Sys龍tem.out.prin田tln(devided田 by0);田 public田staticvoidm完ain(Stringa完rg

28、s) 完 JavaThrow完st1=newJava完Throws();拖t1.method暇1(); 四暇、自定義異常用戶自定義的叁異常類,只需繼承一個(gè)已有叁的異常類就可以了,包括繼叁承Execption類及叁其子類,或者繼承已自定義叁好的異常類。如果沒(méi)有特別叁說(shuō)明,可以直接用Exec叁ption類作為父類。喬自定義類的格式如下:?jiǎn)蘡lass 異常類名喬extends Ex喬ception 羌n 自定義異常類必羌須繼承自Throwabl羌e或Exception類細(xì),建議用Exceptio細(xì)n類。一般不把自定義異常細(xì)作為Error的子類,因細(xì)為Error通常被用來(lái)表細(xì)示系統(tǒng)內(nèi)部的嚴(yán)重故障。n細(xì)

29、當(dāng)自定義異常是從Ru女ntimeExcepti女on及其子類繼承而來(lái)時(shí),女該自定義異常是運(yùn)行時(shí)異常女,程序中可以不捕獲和處理女它。n 當(dāng)自定義異常女是從Throwable、曉Exception及其子曉類繼承而來(lái)時(shí),該自定義異曉常是編譯時(shí)異常,也即程序曉中必須捕獲并處理它。使曉用自定義異常的步驟如下:曉l首先通過(guò)繼承jav仟a.lang.Excep仟tion類聲明自定義的異仟常類。l在方法的聲明仟部分用throws語(yǔ)句聲仟明該方法可能拋出的異常。數(shù)l在方法體的適當(dāng)位置數(shù)創(chuàng)建自定義異常類的對(duì)象,數(shù)并用throw語(yǔ)句將異常數(shù)拋出。l調(diào)用該方法時(shí)數(shù)對(duì)可能產(chǎn)生的異常進(jìn)行捕獲瘤,并處理異常。例:自定逼義一

30、個(gè)異常類,輸入一個(gè)數(shù)逼,大于10,捕獲異常。逼java HYPERLINK /liujun13579/article/details/7742359 o view plain 澆澆澆澆澆澆澆view澆plain HYPERLINK /liujun13579/article/details/7742359 o copy 澆澆雹雹雹雹雹copy/MyE雹xceptionDemo雹.javaclass格MyException格extendsExce格ption/繼承格了Exception這個(gè)格父類技privateint技detail;技MyExc技eption(inta靠)靠靠detail=a;靠靠

31、pu靠blicString靠toString()靠君ret君urnMyExcept君ion+deta君il+;君疆classM疆yExceptionDe疆mo姐staticvoi姐dcompute(in姐ta)throwsM姐yException姐縫Sys縫tem.out.prin縫tln(調(diào)用comp縫ute(+a+縫);癡癡if(a10)癡/a大于10,則拋癡出異??涌觮hr坑ownewMyExce坑ption(a);坑坑至至System.o至ut.println(至常規(guī)退出);員員publi員cstaticvoi值dmain(Strin值gargs)值值try值鹽鹽comput鹽e(1)

32、;鹽/a小于鹽10,常規(guī)退出瞻瞻瞻compute(20)瞻;/a大于10,瞻則拋出異常瞻鎮(zhèn)鎮(zhèn)鎮(zhèn)catch(MyExc鎮(zhèn)eptione)鎮(zhèn)殉殉System.殉out.println(殉捕捉+e);殉/這樣就可以用自己定義液的類來(lái)捕捉異常了液液液珠例:計(jì)算兩個(gè)數(shù)之和,當(dāng)珠任意一個(gè)數(shù)超出范圍(10戰(zhàn),20)時(shí),拋出自己的異幼常。java HYPERLINK /liujun13579/article/details/7742359 o view plain 幼幼幼幼幼淤渣v渣iew plain HYPERLINK /liujun13579/article/details/7742359 o copy 渣渣渣渣渣渣渣c(diǎn)opy/N絢ewException.絢javaclassN絢umberRangeEx絢ceptionexte絢ndsExceptio管npub管licNumberRa管ngeException管(Stringmsg)管管super(msg)管;管/throws重新絆拋出異常NumberRa

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論