版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 公司使用合同范例
- 承包建墓合同范例
- 煤礦合作合同范例
- 矩形清水池課程設(shè)計
- 米食文化研學(xué)課程設(shè)計
- 買柴油合同范例
- 汽車活動贊助合同范例
- 夫妻雙方共同借款合同范例
- 木材原木采購合同范例
- 技術(shù)專利共有合同范例
- 2023年惠州市交通投資集團(tuán)有限公司招聘筆試題庫及答案解析
- 第一學(xué)期期末大作業(yè)(經(jīng)濟(jì)學(xué))
- 腮腺腫瘤課件
- 四川省巴中市2021-2022學(xué)年九年級上學(xué)期期末語文試題(解析版)
- 變壓器保護(hù)課件
- 《大學(xué)英語B》形成性考核 參考資料 廣東開放大學(xué)
- 新生兒腸梗阻護(hù)理查房講解課件
- 收款賬戶確認(rèn)書
- 筆記本電腦補貼申請單
- 職業(yè)衛(wèi)生監(jiān)督檢查表
- 非甾體類抗炎藥PPT
評論
0/150
提交評論