java的一些小知識點彙總--對於新學者容易誤解的地方

1、exception的進階理解
e.printStackTrace( )是打印異常棧信息,而throw new RuntimeException(e)是把異常包在一個運行時異常中拋出。
我們常看見這種寫法
try{
....
}catch(Exception e){
e.printStackTrace( );
throw new RuntimeException(e);
//throw new RuntimeException(e.getMessage());
}
這是處理沒法進一步處理的異常的一般做法。try塊中出現了一個異常,它被catch住了,我們首先要在標準輸出上打印出異常但是如果沒有throw這句,這個錯誤就靜悄悄地被catch塊吃掉了,程序會繼續運行。可這個時候很可能你的程序的狀態已經不對了,繼續下去也沒有什麼意義,所以應該繼續拋出這個異常。你當然可以寫throw e;,但是這個e是一般的異常,如果這樣拋出的話,你得在這個函數頭上用throws來聲明,比如:
public void abc() throws Exception
然後調用這個函數的函數也還得這麼幹,所以一般的處理是把e包裝成運行時異常:new RuntimeException(e),這樣就不需要在函數頭聲明瞭。

但這只是一般的處理方法,在實際程序中不可不顧實際情況和需求生搬硬套。
e.printStackTrace();在實際開發時意義不大,因爲部署以後不會有人看控制檯,這句很多情況下會被記錄日誌的代碼代替。 throw new RuntimeException就是要把異常繼續拋出,要麼由上層方法解決,要麼會終止程序運行,比如這裏,如果初始化都無法正確完成,再繼續運行下去也沒有必要了。至於說多打印一句話,還是因爲在工具環境下,你比較關注控制檯,實際部署環境,沒人看控制檯信息,都會去看日誌中記錄的異常信息。 有結束進程的作用。
try catch如果不寫throw new RuntimeException 只是不執行本方法後面的代碼,然後跳出本方法後繼續執行其他方法,不會結束程序 如果在其他應用中,還可以把異常拋給上層調用者來處理。
2、jar包中可以允許不帶有main方法?

即jar包:可以分爲運行類和不運行類jar包,像maven中pom不用指定mainClass的標籤,僅供依賴用,不運行。

3、import static xxx.jar包

目的:爲的是減少代碼量,調用方法時,不用類名.靜態方法,而直接寫靜態方法。允許不用顯式聲明。。(這個點不是特別確定)
4、抽象的定義
abstract,經常要用到的修飾符。有句話寫的比較好,摘錄下來:能修飾方法,也能修飾類。同時有抽象方法的類,必須抽象;但類抽象了,並不要求類中的方法全部抽象。

5、static變量或方法
代表每個類僅有一個,而不是“每個對象一個”。不能拿來修飾普通類,但能修飾內部類,例如:

public class A{ public static class B{xxx方法()}}


未完待續,主要彙總一些小的知識點,記給自己用的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章