異常處理課件_第1頁
異常處理課件_第2頁
異常處理課件_第3頁
異常處理課件_第4頁
異常處理課件_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論