標籤:
1 final, finally, finalize的區別。
final 用於聲明屬性,方法和類,分別表示屬性不可變,方法不可覆蓋,類不可繼承。
內部類要訪問局部變數,局部變數必須定義成final類型,例如,一段代碼……
finally是異常處理語句結構的一部分,表示總是執行。
finalize是Object類的一個方法,在垃圾收集器執行的時候會調用被回收對象的此方法,可以覆蓋此方法提供垃圾收集時的其他資源回收,例如關閉檔案等。JVM不保證此方法總被調用
2運行時異常與一般異常有何異同?
異常表示程式運行過程中可能出現的非正常狀態,運行時異常表示虛擬機器的通常操作中可能遇到的異常,是一種常見運行錯誤。java編譯器要求方法必須聲明拋出可能發生的非運行時異常,但是並不要求必須聲明拋出未被捕獲的運行時異常。
3error和exception有什麼區別?
error 表示恢複不是不可能但很困難的情況下的一種嚴重問題。比如說記憶體溢出。不可能指望程式能處理這樣的情況。 exception 表示一種設計或實現問題。也就是說,它表示如果程式運行正常,從不會發生的情況。
4Java中的異常處理機制的簡單原理和應用。
異常是指java程式運行時(非編譯)所發生的非正常情況或錯誤,與現實生活中的事件很相似,現實生活中的事件可以包含事件發生的時間、地點、人物、情節等資訊,可以用一個對象來表示,Java使用物件導向的方式來處理異常,它把程式中發生的每個異常也都分別封裝到一個對象來表示的,該對象中包含有異常的資訊。
Java對異常進行了分類,不同類型的異常分別用不同的Java類表示,所有異常的根類為java.lang.Throwable,Throwable下面又派生了兩個子類:Error和Exception,Error 表示應用程式本身無法克服和恢複的一種嚴重問題,程式只有死的份了,例如,說記憶體溢出和線程死結等系統問題。Exception表示程式還能夠克服和恢複的問題,其中又分為系統異常和普通異常,系統異常是軟體本身缺陷所導致的問題,也就是軟體開發人員考慮不周所導致的問題,軟體使用者無法克服和恢複這種問題,但在這種問題下還可以讓軟體系統繼續運行或者讓軟體死掉,例如,數組指令碼越界(ArrayIndexOutOfBoundsException),null 指標異常(NullPointerException)、類轉換異常(ClassCastException);普通異常是運行環境的變化或異常所導致的問題,是使用者能夠克服的問題,例如,網路斷線,硬碟空間不夠,發生這樣的異常後,程式不應該死掉。
java為系統異常和普通異常提供了不同的解決方案,編譯器強制普通異常必須try..catch處理或用throws聲明繼續拋給上層調用方法處理,所以普通異常也稱為checked異常,而系統異常可以處理也可以不處理,所以,編譯器不強制用try..catch處理或用throws聲明,所以系統異常也稱為unchecked異常。
就按照三個層級去思考:虛擬機器必須宕機的錯誤,程式可以死掉也可以不死掉的錯誤,程式不應該死掉的錯誤;
5常見到的runtime exception。
java.lang.NullPointerException
java.lang.ClassNotFoundException
SQLException
ClassCastException
java.lang.ArrayIndexOutOfBoundsException
JAVA中的異常疑點解析