回覆列表
  • 1 # 穿心甲

    相同點:

    兩種異常同屬於exception父類。

    不同點:

    (1)執行時異常都是runtimeexception類及其子類異常,如nullpointerexception、indexoutofboundsexception等。

    (2)一般異常是runtimeexception以外的異常,型別上都屬於exception類及其子類。

    1、java異常機制:

    java把異常當做物件來處理,並定義一個基類java.lang.throwable作為所有異常的超類。

    java中的異常分為兩大類:錯誤error和異常exception。

    2、執行時異常:

    執行時異常是不檢查異常,程式中可以選擇捕獲處理,也可以不處理。這些異常一般是由程式邏輯錯誤引起的。

    當出現runtimeexception的時候,我們可以不處理,總是由虛擬機器接管。比如:我們從來沒有人去處理過nullpointerexception異常,它就是執行時異常,並且這種異常還是最常見的異常之一。

    出現執行時異常後,如果沒有捕獲處理這個異常(即沒有catch),系統會把異常一直往上層拋,一直到最上層,如果是多執行緒就由thread.run()丟擲,如果是單執行緒就被main()丟擲。丟擲之後,如果是執行緒,這個執行緒也就退出了。如果是主程式丟擲的異常,那麼這整個程式也就退出了。

    執行時異常是exception的子類,也有一般異常的特點,是可以被catch塊處理的。只不過往往我們不對他處理罷了。也就是說,你如果不對執行時異常進行處理,那麼出現執行時異常之後,要麼是執行緒中止,要麼是主程式終止。

    如果不想終止,則必須捕獲所有的執行時異常,決不讓這個處理執行緒退出。佇列裡面出現異常資料了,正常的處理應該是把異常資料捨棄,然後記錄日誌。不應該由於異常資料而影響下面對正常資料的處理。

    3、一般異常:

    一般異常包括ioexception、sqlexception等以及使用者自定義的exception異常。對於這種異常,java編譯器強制要求我們必需對出現的這些異常進行catch並處理,否則程式就不能編譯透過。

    所以,面對這種異常不管我們是否願意,只能自己去寫一大堆catch塊去處理可能的異常。

    4、常見runtimeexception:

    arraystoreexception:試圖將錯誤型別的物件儲存到一個物件陣列時丟擲的異常

    classcastexception:試圖將物件強制轉換為不是例項的子類時,丟擲該異常

    illegalargumentexception:丟擲的異常表明向方法傳遞了一個不合法或不正確的引數

    indexoutofboundsexception:指示某排序索引(例如對陣列、字串或向量的排序)超出範圍時丟擲

    nosuchelementexception:表明列舉中沒有更多的元素

    nullpointerexception:當應用程式試圖在需要物件的地方使用null時,丟擲該異常

  • 中秋節和大豐收的關聯?
  • 已經有了二建建築和市政,還需要考一建嗎?