版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
異常處理
?5.1Java異常處理的基礎(chǔ)知識
5.L1錯誤與異常
5.L1異常處理機(jī)制
1.拋出異常2.捕獲異常3.異常處理的類層次
?5.2異常類的產(chǎn)生、捕獲與處理
?5.3異常的分類
?5.4拋出異常
?5.5自定義異常類
5.2異常類的產(chǎn)生、捕獲與處理
1.異常的產(chǎn)生
2.使用try-catch-finally語句捕獲與處理異常
3.Exception異常類的方法
publicclassTryl
(
publicstaticvoidmain(Stringargs[])
(
inti=0;
inta[]={5,6,7,8);
fbr(i=O;i<5;i++)
System.out.println(na["+i+n]=n+a[i]);
System.out.print(n3/0=n+(3/0));
ArraylndexOutOfBoundsException
D:\myjava>javacTryl.java
D:\myjava>javaTryl
a[0]=5
a[l]=6
a[2]=7
a[3]=8
Exceptioninthread"main"java.lang.ArraylndexOutOfBoundsException
atTryl.main(Tryl.java:8)
D:\myjava>javacTryl.java
D:\myjava>javaTryl
Exceptioninthread"main"java.lang.ArithmeticException:/byzero
atTryl.main(tryl.java:9)
使用try-catch-finally語句捕獲與
處理異常
〈語句1>
)
catch(ExceptionTypee)
(
〈語句2>
}
finally
〈語句3>
publicclassTry2
{publicstaticvoidmain(Stringargs[])
{inti=0;
inta[]={5,6,7,8};
fdr(i=0;i<5;i++)
{try
{System.out.print(,,a[,'+i+,,]/n+i+,-,'+(a[i]/i));
)
catch(ArrayIndexOutOfBoundsExceptione)
{System.out.print("捕獲數(shù)組下標(biāo)窺界異常!”);
}
catch(ArithmeticExceptione)
{System.out.print("捕獲算術(shù)異常!");
)
catch(Exceptione)
{System.out.print("捕獲"+e.getMessage()+"異常!");
}〃顯示異常信息
finally
{System.out.println(nfinallyi="+i);捕獲算術(shù)異常!finallyi=0
}a[l]/l=6finallyi=l
}a[2]/2=3finallyi=2
System.out.println("繼續(xù)!)a[3]/3=2finallyi=3
}幕會數(shù)組下標(biāo)越界異常!finallyi=4
}繼續(xù)!
publicclassTry2
{publicstaticvoidmain(Stringargs[])
{inti=0;
inta[]={5,6,7,8);
fdr(i=0;i<5;i++)
{try
{System.out.print(,,a[,,+i+,,]/n+i+,-n+(a[i]/i));
)
/*catch(ArrayIndexOutOfBoundsExceptione)
{System.out.print("捕獲數(shù)組下標(biāo)越界異常!”);
catch(ArithmeticExceptione)
{System.out.print("扁獲算汆異常!)
}*/
catch(Exceptione)
{System.out.print("捕獲"+e.getMessage()+"異常!");
〃顯示異常信息
D:\myjava>javaTry2
finally
捕獲/byzero異常!finallyi=0
{System.out.println(nfinallyi="+i);
}“a[l]/l=6finallyi=l
a[2]/2=3finallyi=2
a[3]/3=2finallyi=3
System,out.println("繼續(xù)!”);病素null異常!finallyi=4
}
繼續(xù)!
5.3異常的分類
?1.異常類層次圖
程序?qū)﹀e誤與異常的三種處理方式:
①程序不能處理的錯誤
②程序應(yīng)避免而不捕獲的異常
③程序必須捕獲的異常
例5.3文件沒有找到異常類
?2.常見的公用異常類
importjava.io.*:
publicclassTry3
(
publicstaticvoidmain(Stringargs[])
(
FilelnputStreamfis=newFileInputStream(nautoexec.batn);
System.out.println(nIcannotfoundthisfile!n);
D:\myjava>javacTry3.java
Try3.java:6:unreportedexceptionjava.io.FileNotFoundException;mustbecaught
ordeclaredtobethrown
FilelnputStreamfis=newFileInputStream("autoexec.bat");
A
1error
D:\myjava>
5.4拋出異常
publicclassTry4
(
publicvoidrun(bytek)〃求k的階乘1!=1
(2!=2
bytey=l,i;
for(i=1;i<=k;i++)3!=6
y=(byte)(y*i);
System.out.println(k+n!=n+y);4!=24
}5!=120
publicstaticvoidmain(Stringargs[])
(6!=-48
Try4a=newTry4();7!=-80
for(bytei=l;i<10;i++)
a.run(i);8!=-128
9!=-128
1.使用throw語句拋出異常
publicclassTry5
(
publicvoidrun(bytek)
(
bytey=l,i=l;
System.out.print(k+n!=M);
fbr(i=l;iv=k;i++)
(
try
(
if(y>Byte.MAX_VALUE/i)//Integer類的常量
thrownewException(ttoverflow^^);〃溢出時拋出異常,12行
else
y=(byte)(y*i);
catch(Exceptione)
System.out.println(nexception:n+e.getMessage());
e.printStackTrace();〃顯示異常信息
System.exit(O);
System.out.println(y);
)
publicstaticvoidmain(Stringargs[])i=1
21=2
3!=6
Try5a=newTry5();4!=24
for(bytei=l;i<10;i++)5!=120
a.run(i);〃29行6!=exception:overflow
java.lang.Exception:overflow
atTry5.run(Try5java:12)
atTry5.main(Try5.java:29)
2,拋出異常的方法與調(diào)用方法處理異常
publicclassTry6
(
publicvoidcalc(bytek)throwsException〃拋出異常
(
bytey=l,i=l;
System.out.print(k+M!=n);
fbr(i=l;i〈=k;i++)
if(y>Byte.MAX_VALUE/i)
thrownewException("overflow");〃10行
else
y二(byte)(y*i);
System.out.println(y);
publicvoidrun(bytek)〃捕獲并處理異常
{try一
{calc(k);〃20行
}
catch(Exceptione)
(
System.out.println(uexception:n+e.getMessage());
e.printStackTrace();
System.exit(O);
}
}
publicstaticvoidmain(Stringargs[])
(
Try6a=newTry6();
fbr(bytei=l;i<10;i++)
a.run(i);〃33行
Try6的運行結(jié)果
D:\myjava>javaTry6
1!=1
2!=2
31=6
4!=24
5!=120
6!=exception:overflow
java.lang.Exception:overflow
atTry6.cale(Try6.java:10)
atTry6.run(Try6.java:20)
atTry6.main(Try6.java:33)
3.由方法拋出異常交系統(tǒng)處理
importjava.io.*;
publicclassTry3
(
publicstaticvoidmain(Stringargs[])throwlOException
FilelnputStreamfis=newFileInputStream("autoexec上at");
5.5自定義異常類
classOverflowExceptionextendsException〃自定義異常類
(
publicvoidprintMsg()
(
System.out.println(nexception:n+this.getMessage());
this.printStackTrace();
System.exit(O);
publicclassTry7
publ
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 貴州財經(jīng)職業(yè)學(xué)院《體育舞蹈II》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年云南建筑安全員考試題庫
- 廣州中醫(yī)藥大學(xué)《化工原理2》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州醫(yī)科大學(xué)《生物考古學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 廣州幼兒師范高等??茖W(xué)?!盾浖到y(tǒng)分析》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025江西省建筑安全員-B證(項目經(jīng)理)考試題庫
- 2025年遼寧建筑安全員考試題庫
- 緒論現(xiàn)代西方哲學(xué)思潮專題教學(xué)課件
- 河北省保定市競秀區(qū)2024-2025學(xué)年九年級上學(xué)期11月期中數(shù)學(xué)試題(含答案)
- 2024年江西科技職業(yè)學(xué)院單招職業(yè)技能測試題庫及完整答案
- 《組織與胚胎學(xué)》課程期末考試復(fù)習(xí)題庫及答案
- (八省聯(lián)考)河南省2025年高考綜合改革適應(yīng)性演練 化學(xué)試卷(含答案)
- 部編版三年級上冊道德與法治期末測試卷帶答案(鞏固)
- 教師個人工作業(yè)績總結(jié)范文
- 《中華人民共和國政府采購法》專題培訓(xùn)
- 鄭州大學(xué)《高等代數(shù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 對銀行領(lǐng)導(dǎo)班子的評價意見和建議范文(3篇)
- 如何保護(hù)個人手機(jī)數(shù)據(jù)的安全
- 2024醫(yī)療設(shè)備維修與保養(yǎng)合同
- 第6課 戰(zhàn)國時期的社會變革(說課稿)2024-2025學(xué)年七年級歷史上冊同步高效課堂(統(tǒng)編版2024)
- 汽車內(nèi)飾件及材料氣味評價標(biāo)準(zhǔn)解析
評論
0/150
提交評論