版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
Java程序設(shè)計(jì)主講:第異常的概念異常的分類聲明異常拋出異常捕獲并處理異常自定義異常類在有些情況下,一個(gè)方法并不需要處理它所生成的異常,而是向上傳遞,由調(diào)用它的方法來(lái)處理這些異常,這時(shí)就要用到throws子句,它包含在方法的聲明中,其格式如下:void
compute(int
x)
throws
ArithmeticException
{…}返回類型
方法名(參數(shù)列表)
throws
異常列表間由逗號(hào)隔開public
class
Test7
{pJuablvicas語(yǔ)tatic言vo中id
d通ivid過(guò)e()tthhrroowws
Esx聲cep明tion某{個(gè)方法可能拋出的各種異常Scanner
in
=
newScanner(System.in);可以Sy同ste時(shí)m.o聲ut.p明rin多t("請(qǐng)個(gè)輸入異被常除數(shù),:"之);intnum1=in.nextInt();System.out.print("請(qǐng)輸入除數(shù):");int
num2=in.nextInt();int
result
=
num1
/
num2;System.out.println("計(jì)算結(jié)果為"+result);}public
staticvoid
main(String[]args){try
{divide();}
catch(Exception
e)
{e.printStackTrace();}}// public
staticvoid
main(String[]
args)
throws
Exception
{//
divide();//
}}divide()方法沒(méi)有處理異常,而是聲明異常方式1:調(diào)用者通過(guò)try-catch捕獲并處理異常方式2:調(diào)用者通過(guò)throws繼續(xù)聲明異常演示示例:使用throws聲明異常class
ThrowTest{throws
Exceptionvoid
compute(String[]
args){int
num1
=
0,num2
=
0;int
result
=
0;num1=Integer.parseInt(args[0]);num2=Integer.parseInt(args[1]);System.out.println("開始計(jì)算");if(num2==0)throw
new
Exception();result
=
num1/num2;System.out.println("計(jì)算完畢:結(jié)果為"+result);System.out.println("計(jì)算過(guò)程結(jié)束");}}拋出異常向上拋出異常public
class
ThrowDemo{public
static
void
main(String[]
args){ThrowTest
tt
=new
ThrowTest();pute(args);try{}catch(Exception
e){e.printStackTrace();}創(chuàng)建對(duì)象-
compute方法可以拋出異常當(dāng)參數(shù)arg[1]為0compute方法拋出異常發(fā)現(xiàn)異常通知catch塊捕獲并處理異常System.out.println("運(yùn)行結(jié)束");}}除了系統(tǒng)自動(dòng)拋出異常外,有些問(wèn)題需要程序員自行拋出異常public
class
Person
{private
String
name="";//姓名
private
int
age=0;//
年齡
private
String
sex="男";//性別public
void
setSex(Stringsex)
throws
Exception
{if("男".equals(sex)||"女".equals(sex))this.sex=sex;else
{}}}public
class
Test8
{public
staticvoid
main(String[]args){throw
new
Exception("性別必須是“Pe男rs”on或p者ers“on女=”n!ew");Person();try
{person.setSex("Male");person.print();;m.out.println(
+
"("
+
this.sex}
catch(Exception
e)
{+
","+this.age
+
"歲)");
e.printStackTrace()}}}}
拋出異常public
void
print(){Syste捕獲異常,或者throws異常演示示例:使用throw拋出異常在捕獲一個(gè)異常前,必須有一段Java代碼生成一個(gè)異常對(duì)象并把它拋出。拋出異常的代碼可以是你的Java程序,或者是JDK中某個(gè)類,或者是
Java運(yùn)行時(shí)系統(tǒng)。它們都是通過(guò)throw語(yǔ)句來(lái)實(shí)現(xiàn)的。格式為:throw
ThrowableObject;throw
new
ArithmeticException();Public
class
JavaThrow{public
static
void
main(String
args[]){try{throw
new
ArithmeticException();//拋出算術(shù)異常}catch(ArithmeticException
ae){System.out.println(ae);}try{throw
new
ArrayIndexOutOfBoundsException();//拋出數(shù)組下標(biāo)越界異常}catch(ArrayIndexOutOfBoundsException
ai){System.out.println(ai);}……}}}public
class
ThrowDemo{public
static
void
main(String[]
args){…
…num1
=
Integer.parseInt(args[0]);num2
=
Integer.parseInt(args[1]);System.out.println("開始計(jì)算");throw
new
ArithmeticException();ult);:結(jié)果為"+restry{if
(num2
==
0)result=num1/num2;System.out.println("計(jì)算完畢}catch(Exception
e){e.printStackTrace();}…
…}}ArithmeticException異常拋出異常捕獲并處理異常發(fā)現(xiàn)異常通知catch塊throw是語(yǔ)句拋出一個(gè)異常;throws是方法拋出一個(gè)異常;throws可以單獨(dú)使用,但throw不能;throw要么和try-catch-finally語(yǔ)句配套使用,要么與throws配套使用;throws可以單獨(dú)使用,是聲明這個(gè)方法會(huì)拋出這種類型的異常,然后再由處理異常的方法捕獲;throw是具體向外拋異常的動(dòng)作,所以它是拋出一個(gè)異常實(shí)例也就是對(duì)象;
JavaAPI提供的內(nèi)置異常不一定總能捕獲程序中發(fā)生的所有錯(cuò)誤。有時(shí)會(huì)需要?jiǎng)?chuàng)建用戶自定義異常。對(duì)于自定義的異常類,通常把它作為類Exception的子類,而不作為類Error的子類,因?yàn)镋rror類通常用于系統(tǒng)內(nèi)嚴(yán)重的硬件錯(cuò)誤。并且在多數(shù)情況下,不要把自定義的異常類作為運(yùn)行時(shí)異常類RuntimeException子類。另外,自定義異常類的類名常常以Exception結(jié)尾。在繼承任何異常時(shí),將自動(dòng)繼承Throwable類的一些標(biāo)準(zhǔn)特性,如:錯(cuò)誤消息棧跟蹤異常包裝class
MyException
extends
Exceptionclass
UserExceptionDemo
extends
ArithmeticException{UserExceptionDemo(){super("除數(shù)為零");}}第一步:創(chuàng)建異常類創(chuàng)建自定義異常類若要建立自己的異常類型,只要定義Exception的一個(gè)子類就可以了,子類不需要實(shí)際執(zhí)行什么——它們?cè)陬愋拖到y(tǒng)中的存在允許把它們當(dāng)成異常使用。第二步:使用異常類為了使用自定義異常,必須通知調(diào)用代碼的類:要準(zhǔn)備處理這個(gè)異常類型。為此,聲明一個(gè)或多個(gè)方法拋出異常。class
UseUserException{void
compute(String[]
args)
throws
UserExceptionDemo{…
…num2
=
Integer.parseInt(args[1]);if(num2==0)throw
new
UserExceptionDemo();result
=
num1
/
num2;System.out.println("計(jì)算完畢:結(jié)果為"+result);}UseUserException(String[]
args){try{compute(args);}catch(UserExceptionDemo
e){e.printStackTrace();}}}手動(dòng)拋出自定義異常參數(shù)args[1]=0拋出自定義異常public
class
UserException{public
static
void
main(String
args[]){UseUserException
uue=new
UseUserException(args);System.out.println("程序運(yùn)行結(jié)束");}}創(chuàng)建捕獲自定義異常的對(duì)象第三步:測(cè)試異常類需求說(shuō)明:創(chuàng)建一個(gè)自定義的年齡異常類在setAge(intage)中對(duì)年齡進(jìn)行判斷,如果年齡介于1到100直接賦值,否則拋出異常在測(cè)試類中創(chuàng)建對(duì)象并調(diào)用setAge(int age)方法,使用try-catch捕獲并處理異常完成時(shí)間:15分鐘異常是運(yùn)行時(shí)發(fā)生的錯(cuò)誤。所有異常類的基類是Exception??梢允褂胻ry、catch、和finally來(lái)管理
Java異常處理。要監(jiān)控的程序語(yǔ)句包含在try塊內(nèi),catch塊中的代碼用于捕獲和處理異常。在方法返回之前絕對(duì)必須執(zhí)行的代碼應(yīng)放置在finally塊中。要手動(dòng)引發(fā)異常,使用關(guān)鍵字throw。任何被拋到方法外部的異常都必須用throws子句指定。對(duì)于自定義的異常類,通常把它作為類
Exception的子類在繼承任何異常時(shí),將自動(dòng)繼承
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 紡織課程設(shè)計(jì)與體會(huì)
- 魔王音樂(lè)課程設(shè)計(jì)
- 汽車尾燈課程設(shè)計(jì)概述
- 課程設(shè)計(jì)燈光顯示電路
- 2024至2030年中國(guó)免加水環(huán)保電池?cái)?shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2024至2030年中國(guó)矽酸鈉數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2024至2030年中國(guó)電極針數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2024年洋參含片項(xiàng)目可行性研究報(bào)告
- 2024至2030年中國(guó)奧美拉唑鈉數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 2024年SBS彈性體瀝青防水卷材項(xiàng)目可行性研究報(bào)告
- 5000頭奶牛養(yǎng)殖場(chǎng)新建項(xiàng)目環(huán)境評(píng)估報(bào)告書
- IATF16949-過(guò)程審核檢查表-(含審核記錄)-
- 建設(shè)美麗中國(guó)通用課件
- 花卉園藝師國(guó)家職業(yè)資格二級(jí)理論知識(shí)試卷
- 光伏項(xiàng)目概算計(jì)算表
- 植物檢疫學(xué)復(fù)習(xí)題及答案(詳細(xì))
- 散文閱讀精練(100篇優(yōu)秀散文每篇均附能力訓(xùn)練)-現(xiàn)代文精練
- 《萬(wàn)疆》歌詞全篇
- 小學(xué)六年級(jí)數(shù)學(xué)上冊(cè)電子教案(全)
- 2023江西教師聘請(qǐng)面試《植物體的結(jié)構(gòu)層次》說(shuō)課稿
- 專業(yè)選修課-《中藥學(xué)》課程教學(xué)大綱
評(píng)論
0/150
提交評(píng)論