




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
異常處理
?5.1Java異常處理的基礎知識
5.L1錯誤與異常
5.L1異常處理機制
1.拋出異常2.捕獲異常3.異常處理的類層次
?5.2異常類的產生、捕獲與處理
?5.3異常的分類
?5.4拋出異常
?5.5自定義異常類
5.2異常類的產生、捕獲與處理
1.異常的產生
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("捕獲數組下標窺界異常!”);
}
catch(ArithmeticExceptione)
{System.out.print("捕獲算術異常!");
)
catch(Exceptione)
{System.out.print("捕獲"+e.getMessage()+"異常!");
}〃顯示異常信息
finally
{System.out.println(nfinallyi="+i);捕獲算術異常!finallyi=0
}a[l]/l=6finallyi=l
}a[2]/2=3finallyi=2
System.out.println("繼續!)a[3]/3=2finallyi=3
}幕會數組下標越界異常!finallyi=4
}繼續!
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("捕獲數組下標越界異常!”);
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("繼續!”);病素null異常!finallyi=4
}
繼續!
5.3異常的分類
?1.異常類層次圖
程序對錯誤與異常的三種處理方式:
①程序不能處理的錯誤
②程序應避免而不捕獲的異常
③程序必須捕獲的異常
例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,拋出異常的方法與調用方法處理異常
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的運行結果
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.由方法拋出異常交系統處理
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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 項目管理考試內容理解試題及答案
- 項目管理資格認證考試回顧試題及答案
- 2024年項目管理專業人士資格考試預測試題及答案
- 2025年會計崗位職責試題及答案
- 洗煤廠粉塵治理施工方案
- 微生物檢驗技師的基本知識試題及答案
- 財務政策對公司戰略的影響試題及答案
- 水泥土換填施工方案批復
- 管道工程測量與定位考核試卷
- 2024年項目管理能力評估試題及答案
- 鐵粉運輸合同協議
- 廣東省珠海市2024-2025學年七年級下學期期中考試英語試題(無答案)
- 2024年中國南水北調集團水網發展研究有限公司招聘考試真題
- (四調)武漢市2025屆高中畢業生四月調研考試 語文試卷(含答案詳解)
- 2025年融媒體中心招聘考試筆試試題(60題)附答案
- 公司事故隱患內部報告獎勵制度
- 大學生創新創業基礎(創新創業課程)完整全套教學課件
- GIS組合電器課件
- 村田數控沖床安裝步驟_圖文
- 語法填空題教案
- 白油安全技術說明書(共2頁)
評論
0/150
提交評論