日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java异常基本知识

發(fā)布時(shí)間:2025/1/21 编程问答 93 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java异常基本知识 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Throwable
??? ?|--Error
??? ?|--Exception
??? ??? ?|--RuntimeException
?? ??? ?
?? ??? ?
異常體系的特點(diǎn):異常體系中的所有類以及建立的對(duì)象都具備可拋性;
?? ??? ??? ??? ?也就是說可以被throw和throws關(guān)鍵字多操作。
?? ??? ??? ??? ?只有異常體系具備這個(gè)特點(diǎn)
?? ??? ??? ??? ?
throw和throws的用法;
?? ?throw定義在函數(shù)內(nèi),用于拋出異常對(duì)象
?? ?throws定義在函數(shù)上,用于拋出異常類,可以拋出多個(gè)用逗號(hào)隔開。

當(dāng)函數(shù)內(nèi)容有throw拋出異常對(duì)象,并未進(jìn)行try處理。必須要在函數(shù)上聲明,都在編譯失敗
注意:RuntimeException除外。也就說,函數(shù)內(nèi)如果拋出的RuntimeException異常,函數(shù)上可以不聲明。

如果函數(shù)聲明了異常,調(diào)用者需要進(jìn)行處理。處理方法可以throws可以try。

異常有兩種:
?? ?編譯時(shí)被檢測(cè)異常
?? ??? ?該異常在編譯時(shí),如果沒有處理(沒有拋出也沒有try),編譯失敗。
?? ??? ?該異常被標(biāo)識(shí),代表這可以被處理。
?? ?運(yùn)行時(shí)異常(編譯時(shí)不檢測(cè))
?? ??? ?在編譯時(shí),不需要處理,編譯器不檢查。
?? ??? ?該異常的發(fā)生,建議不處理,讓程序停止。需要對(duì)代碼進(jìn)行修正。


異常處理的語句:
try{
?? ?需要被檢查的代碼
}
catch{
?? ?處理異常的代碼
}
final{
?? ?一定會(huì)執(zhí)行的代碼
}

有三種結(jié)合格式:
try{}catch{}
try{}catch{}finally{}
try{}finally{}

注意:
?? ?1.finally中定義的通常是 關(guān)閉資源代碼。因?yàn)橘Y源代碼必須釋放
?? ?2.finally只有一種情況不會(huì)執(zhí)行,當(dāng)執(zhí)行到System.exit(0);finally不會(huì)被執(zhí)行

?? ?
自定義異常:
?? ?定義類繼承Exception或者RuntimeException
?? ?1.為了讓該自定義類具備可拋性。
?? ?2.讓該類具備澳洲異常的共性方法。
?? ?
?? ?當(dāng)要定義自定義異常的信息時(shí),可以使用父類已經(jīng)定義好的功能。
?? ?異常異常信息傳遞給父類的構(gòu)造函數(shù)。
?? ?class MyException extends Exception{
?? ??? ?MyException(String mssage){
?? ??? ??? ?super(mssage);
?? ??? ?}
?? ?}
自定義異常:按照J(rèn)ava的面向?qū)ο笏枷?#xff0c;將程序中出現(xiàn)的特有問題進(jìn)行封裝。

異常的好處:
?? ?1.將問題進(jìn)行封裝
?? ?2.將正常流程代碼和問題處理代碼相分離,方便于閱讀。
異常的處理原則:
?? ?1.處理方式有兩種:try或者throws。
?? ?2.調(diào)用到拋出異常的功能時(shí),拋出幾個(gè),就處理幾個(gè)。
?? ??? ?一個(gè)try對(duì)應(yīng)多個(gè)catch。
?? ?3.多個(gè)catch,父類的catch放到最下面。
?? ?4.catch內(nèi),需要定義針對(duì)性的處理方式,不要簡單的定義printStackTrace,輸出語句
?? ??? ?也不要不寫。
?? ??? ?當(dāng)捕獲到的異常,本功能處理不了時(shí)??梢岳^續(xù)在catch中拋出。
?? ??? ?try{
?? ??? ??? ?throw new AException();
?? ??? ?}catch(AException e){
?? ??? ??? ?throw e;
?? ??? ?}
?? ??? ?
?? ??? ?如果該異常處理不了,但不屬于該功能出現(xiàn)的異常。
?? ??? ?可以將異常轉(zhuǎn)換后,在拋出和該功能相關(guān)的異常。
?? ??? ?
?? ??? ?或者異常可以處理,當(dāng)需要將異常產(chǎn)生的和本功能相關(guān)的問題提供出去,
?? ??? ?當(dāng)調(diào)用者知道。并不處理。也可以將捕獲異常處理后,轉(zhuǎn)換新的異常。
?? ??? ?try{
?? ??? ??? ?throw new AException();
?? ??? ?}catch(AException e){
?? ??? ??? ?//對(duì)AException處理
?? ??? ??? ?throw new BException();
?? ??? ?}
?? ?
異常的注意事項(xiàng):
?? ?在子父類覆蓋時(shí):
?? ?1.子類拋出的異常必須是父類的異常的子類或者子集
?? ?2.如果父類或者接口沒有異常拋出時(shí),子類覆蓋出現(xiàn)異常,只能try不能拋。

1 package Exception; 2 /** 3 * thows Exception 異常拋出。 4 * @author asus1 5 * 6 */ 7 public class Exception_throws { 8 public static void main(String[] args) { 9 Demo2 d = new Demo2(); 10 try{ 11 12 int re = d.div(4, -1); 13 System.out.println(re); 14 }catch(Exception e){ 15 System.out.println("Erro"); 16 } 17 18 System.out.println("over"); 19 20 } 21 } 22 class Demo2{ 23 public int div(int x,int y)throws Exception 24 { 25 int[] arr = new int[x]; 26 return x/y; 27 } 28 }

?

轉(zhuǎn)載于:https://www.cnblogs.com/tongxuping/p/6832558.html

與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的java异常基本知识的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。