異常處理一般有2種方式,要么捕獲異常try-catch,要么拋出異常throws
如果一個方法後面拋出一個運行時期異常(throws RuntimeException),調用者無須處理
如果一個方法後面拋出一個編譯時期異常,調用者必須處理,或者拋出或者try-catch;
運行時期的異常一般都不處理,一般是程序邏輯上的錯誤,比如分母為0作為除數了。 。 。
注意如果在try裡面出現了異常後,try下面的語句就不會執行,回去尋找catch匹配異常處理會,接下來的語句會處理的(也就是在try-catch-finally之後的語句會繼續執行)
/*
* 有些時候,我們是可以對異常進行處理的,但是又有些時候,我們根本就沒有權限去處理某個異常。
* 或者說,我處理不了,我就不處理了。
* 為了解決出錯問題,Java針對這種情況,就提供了另一種處理方案:拋出。
*
* 格式:
* throws 異常類名
* 注意:這個格式必須跟在方法的括號後面。
*
* 注意:
* 盡量不要在main方法上拋出異常。
* 但是我講課為了方便我就這樣做了。
*
* 小結:
* 編譯期異常拋出,將來調用者必須處理。
* 運行期異常拋出,將來調用可以不用處理。
*/
凡是RuntimeException及其子類的異常都不處理(不拋出也不捕獲),如果真的知道運行時會有異常拋出的話,,那麼直接檢查修改程序的邏輯就OK! ! !
package 異常;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Date;public class ExceptionDemo {public static void main(String[] args) {System.out.println("調用方法之前");try {method();// 編譯時期異常拋出必須處理} catch (ParseException e) {e.printStackTrace();}System.out.println("調用方法1後在調用方法二");method2();}public static void method2() throws RuntimeException{int a = 10;int b = 0;System.out.println("a/b="+a/b);//運行時期異常可以不用處理,如果處理為拋出異常throws,那麼調用者也無需必須處理異常}public static void method() throws ParseException {String string = "2015-05-30";SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//會逐步匹配string格式,不對就拋異常SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//如果string只有2015-05-30,沒有後面的,那麼會跑異常,因為這個sdf2無法匹配HH:mm:ssDate date = sdf.parse(string);System.out.println("日期格式化:" + date);}}異常結構圖:
error的異常我們程序員不用處理也處理不了,
runtimeexception的運行時期異常我們也無需處理,
其他的就是編譯時期的異常我們就要處理了。
以上就是小編為大家帶來的淺談異常結構圖、編譯期異常和運行期異常的區別的全部內容了,希望對大家有所幫助,多多支持武林網~