異常一般分為運(yùn)行時(shí)異常和一般異常,也可以分為:
受檢異常:exception調(diào)用者希望有適當(dāng)?shù)幕謴?fù)機(jī)制,就用受檢異常
未受檢異常:RuntimeException or ERROR不必聲明
運(yùn)行時(shí)異常與一般異常有何異同
異常表示程序運(yùn)行過程中可能出現(xiàn)的非正常狀態(tài),運(yùn)行時(shí)異常表示虛擬機(jī)的通常操作中可能遇到的異常,是一種常見運(yùn)行錯(cuò)誤。java編譯器要求方法必須聲明拋出可能發(fā)生的非運(yùn)行時(shí)異常,但是并不要求必須聲明拋出未被捕獲的運(yùn)行時(shí)異常。
給我一個(gè)你最常見到的runtime exception
答案:
ArithmeticException,ArrayStoreException,BufferOverflowException,BufferUnderflowException,CannotRedoException,CannotUndoException,ClassCastException,CMMException,ConcurrentModificationException,DOMException,EmptyStackException,IllegalArgumentException,IllegalMonitorStateException,IllegalPathStateException,IllegalStateException,ImagingOpException,IndexOutOfBoundsException,MissingResourceException,NegativeArraySizeException,NoSuchElementException,NullPointerException,ProfileDataException,ProviderException,RasterFormatException,SecurityException,SystemException,UndeclaredThrowableException,UnmodifiableSetException,UnsupportedOperationException
異常的處理過程:
通過try、catch捕獲異常
單個(gè)異常:try{//程序代碼}catch(exception e){//Catch塊}多個(gè)異常:try{//程序代碼}catch(exception1 e1){//Catch塊}catch(exception2 e1){//Catch塊}
通過throws拋出異常
定義一個(gè)方法的時(shí)候可以使用throws關(guān)鍵字聲明。使用throws關(guān)鍵字聲明的方法表示此方法不處理異常,而交給方法調(diào)用處進(jìn)行處理。
throw關(guān)鍵字拋出異常
throw關(guān)鍵字作用是拋出一個(gè)異常,拋出的時(shí)候是拋出的是一個(gè)異常類的實(shí)例化對(duì)象,在異常處理中,try語句要捕獲的是一個(gè)異常對(duì)象,那么此異常對(duì)象也可以自己拋出
1、不管有沒有出現(xiàn)異常,finally塊中代碼都會(huì)執(zhí)行;
2、當(dāng)try和catch中有return時(shí),finally仍然會(huì)執(zhí)行;
3、finally是在return后面的表達(dá)式運(yùn)算后執(zhí)行的(此時(shí)并沒有返回運(yùn)算后的值,而是先把要返回的值保存起來,不管finally中的代碼怎么樣,返回的值都不會(huì)改變,仍然是之前保存的值),所以函數(shù)返回值是在finally執(zhí)行前確定的;
4、finally中最好不要包含return,否則程序會(huì)提前退出,返回值不是try或catch中保存的返回值。
以上就是長(zhǎng)沙達(dá)內(nèi)教育java培訓(xùn)機(jī)構(gòu)的小編針對(duì)“互聯(lián)網(wǎng)常見的Java異常處理練習(xí)題”的內(nèi)容進(jìn)行的回答,希望對(duì)大家有所幫助,如有疑問,請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。