1. 程式人生 > >java中的異常 try catch

java中的異常 try catch

bsp 17. 輸出 pro war 提示 編譯 無法 .get

1.學習異常的原因?

如果沒有異常處理機制,那麽程序的一點小問題,都會導致【程序終止運行】。實際開發中顯然是不可能的,所以異常對於程序來說是非常重要的。

2.處理異常的方式:
A.if結構:

1。代碼量大,代碼結構不明顯

2。程序員的大部分精力不是用在流程上,而是“堵漏洞”。

3。遺留一個漏洞,程序依然終止。

B。異常處理機制:
try catch finally throw throws

異常的捕獲 拋出異常 聲明異常。


3.異常處理的結構:

第一種: try---catch:

程序正常運行:只走try代碼塊裏的代碼;catch塊不執行。


程序發生異常:走try報錯前的代碼--會產生一個異常對象;

異常對象與catch塊捕獲的異常類型進行對比;

如果匹配:執行對應catch塊代碼;

如果不匹配:程序依然終止。


第二種:try--catch---catch:

程序正常運行:只走try代碼塊裏的代碼;catch塊不執行。


程序發生異常:走try報錯前的代碼--會產生一個異常對象;

異常對象與catch塊捕獲的異常類型進行對比;

如果匹配:執行對應catch塊代碼;【只有一個匹配的catch塊代碼】

如果不匹配:程序依然終止。

註意:1.父類的異常類型【必須】在最後一個catch裏。
2.子類的異常類型順序無關。
3.最後一個catch塊都是存放父類的異常類型。


第三種:try--catch--catch--finally


程序正常運行:只走try代碼塊裏的代碼;catch塊不執行;走finally。


程序發生異常:走try報錯前的代碼--》會產生一個異常對象;

異常對象與catch塊捕獲的異常類型進行對比;

如果匹配:執行對應catch塊代碼;【只有一個匹配的catch塊代碼】
---走finally

如果不匹配:程序依然終止。 ---走finally


【問題:什麽情況下,finally不走】

1.return :finally代碼塊依然執行;
先執行catch塊中return前面的代碼;
再執行finally塊中的代碼;
最後執行return。

2.System.exit(1);程序退出。 終止finally塊的執行。

4.輸出異常信息的形式:
System.out.println("提示信息");
System.out.println(e.getMessage());
e.printStackTrace();

5.throws關鍵字(聲明異常):
---作用:我處理不了,你來處理,我告訴你應該註意的事項。


當你需要告訴調用者,該方法需要註意異常時,使用throws。


使用:

1.在方法定義的時候:

public void 方法名1() throws 異常類型1,異常類型2{

}

2.方法調用的時候:兩種方法來處理:

A。使用try--catch進行異常捕獲

try {
被調用的方法名1();
} catch (異常類型1 e) {
e.printStackTrace();
} catch (異常類型2 e) {
e.printStackTrace();
}finally{

}

B。不處理,繼續往上聲明異常:

public void 方法名2()throws 異常類型1,異常類型2{
被調用的方法名1();
}

6.throw(拋出異常):

---不是異常,為了引起調用者重視,手動拋出異常。

使用throw:
public void setsex(String str){
if(!str.equals("男")){

throw new ClassCastException("性別必須為男或者女");

}else{

String sex=str;
}
}
7.異常分類:

object

throwable

error Exception

checked(編譯異常) Running(運行異常)

error :僅靠程序本身無法恢復的嚴重錯誤。

Exception:→由java應用程序拋出和處理的非嚴重錯誤。

checked:異常必須處理。(不處理,無法運行)

Running:不處理可以,一旦發生異常,程序終止。

8.log4j 開源日誌文件:

作用:把異常信息,在一個獨立的文件裏進行記錄或者是輸出到控制臺。

步驟:
1.把log4j-1.2.17.jar 方法項目的lib文件夾下;加載:選中--右鍵---buil path---add to buil path

2.把log4j.properties 放到項目src ,不能放到src外面,或者是src的子目錄都不行。
3.調用:

創建logger對象:
public static Logger logger=Logger.getLogger(Test.class);
在catch塊中寫記錄異常語句:
logger.debug("提示信息");
logger.debug(e.getMessage());
|
這裏可以是debug,info,warm,error,fatal五個輸出級別

4.刷新項目,出現 jbit.log文件,記錄異常信息

java中的異常 try catch