淺談異常結(jié)構(gòu)圖、編譯期異常和運(yùn)行期異常的區(qū)別
異常處理一般有2種方式,要么捕獲異常try-catch,要么拋出異常throws
如果一個(gè)方法后面拋出一個(gè)運(yùn)行時(shí)期異常(throws RuntimeException),調(diào)用者無(wú)須處理
如果一個(gè)方法后面拋出一個(gè)編譯時(shí)期異常,調(diào)用者必須處理,或者拋出或者try-catch;
運(yùn)行時(shí)期的異常一般都不處理,一般是程序邏輯上的錯(cuò)誤,比如分母為0作為除數(shù)了。。。
注意如果在try里面出現(xiàn)了異常后,try下面的語(yǔ)句就不會(huì)執(zhí)行,回去尋找catch匹配異常處理會(huì),接下來(lái)的語(yǔ)句會(huì)處理的(也就是在try-catch-finally之后的語(yǔ)句會(huì)繼續(xù)執(zhí)行)
/*
* 有些時(shí)候,我們是可以對(duì)異常進(jìn)行處理的,但是又有些時(shí)候,我們根本就沒(méi)有權(quán)限去處理某個(gè)異常。
* 或者說(shuō),我處理不了,我就不處理了。
* 為了解決出錯(cuò)問(wèn)題,Java針對(duì)這種情況,就提供了另一種處理方案:拋出。
*
* 格式:
* throws 異常類名
* 注意:這個(gè)格式必須跟在方法的括號(hào)后面。
*
* 注意:
* 盡量不要在main方法上拋出異常。
* 但是我講課為了方便我就這樣做了。
*
* 小結(jié):
* 編譯期異常拋出,將來(lái)調(diào)用者必須處理。
* 運(yùn)行期異常拋出,將來(lái)調(diào)用可以不用處理。
*/
凡是RuntimeException及其子類的異常都不處理(不拋出也不捕獲),如果真的知道運(yùn)行時(shí)會(huì)有異常拋出的話,,那么直接檢查修改程序的邏輯就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("調(diào)用方法之前");
try {
method();// 編譯時(shí)期異常拋出必須處理
} catch (ParseException e) {
e.printStackTrace();
}
System.out.println("調(diào)用方法1后在調(diào)用方法二");
method2();
}
public static void method2() throws RuntimeException{
int a = 10;
int b = 0;
System.out.println("a/b="+a/b);//運(yùn)行時(shí)期異常可以不用處理,如果處理為拋出異常throws,那么調(diào)用者也無(wú)需必須處理異常
}
public static void method() throws ParseException {
String string = "2015-05-30";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");//會(huì)逐步匹配string格式,不對(duì)就拋異常
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//如果string只有2015-05-30,沒(méi)有后面的,那么會(huì)跑異常,因?yàn)檫@個(gè)sdf2無(wú)法匹配HH:mm:ss
Date date = sdf.parse(string);
System.out.println("日期格式化:" + date);
}
}
異常結(jié)構(gòu)圖:


error的異常我們程序員不用處理也處理不了,
runtimeexception的運(yùn)行時(shí)期異常我們也無(wú)需處理,
其他的就是編譯時(shí)期的異常我們就要處理了。
以上就是小編為大家?guī)?lái)的淺談異常結(jié)構(gòu)圖、編譯期異常和運(yùn)行期異常的區(qū)別的全部?jī)?nèi)容了,希望對(duì)大家有所幫助,多多支持腳本之家~
相關(guān)文章
Java語(yǔ)言中&&與& ||與|的區(qū)別是什么
這篇文章主要介紹了Java語(yǔ)言中&&與& ||與|的區(qū)別是什么的相關(guān)資料,需要的朋友可以參考下2017-04-04
基于java實(shí)現(xiàn)websocket代碼示例
這篇文章主要介紹了基于java實(shí)現(xiàn)websocket代碼示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-12-12
Java項(xiàng)目實(shí)現(xiàn)尋找迷宮出路
這篇文章主要為大家詳細(xì)介紹了Java項(xiàng)目實(shí)現(xiàn)尋找迷宮出路,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-05-05
Java ArrayList與LinkedList及HashMap容器的用法區(qū)別
這篇文章主要介紹了Java ArrayList與LinkedList及HashMap容器的用法區(qū)別,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-07-07
Java中的線程中斷機(jī)制和LockSupport詳解
這篇文章主要介紹了Java中的線程中斷機(jī)制和LockSupport詳解,在Java中沒(méi)有辦法立即停止一條線程,然而停止線程卻顯得尤為重要,如取消一個(gè)耗時(shí)操作,因此,Java提供了一種用于停止線程的協(xié)商機(jī)制中斷,也即中斷標(biāo)識(shí)協(xié)商機(jī)制,需要的朋友可以參考下2023-09-09
Java中easypoi的使用之導(dǎo)入校驗(yàn)
因工作需要,使用easypoi導(dǎo)入表格,并進(jìn)行校驗(yàn),將表格中有問(wèn)題的地方,給出提示信息,以表格形式返回,下面這篇文章主要給大家介紹了關(guān)于Java中easypoi的使用之導(dǎo)入校驗(yàn)的相關(guān)資料,需要的朋友可以參考下2023-03-03

