Java如何將處理完異常之后的程序能夠從拋出異常的地點(diǎn)向下執(zhí)行?
因?yàn)镴ava中的異常處理理論,支持的是終止模型,在這種模型中,拋出異常之后,程序無法返回到異常發(fā)生的地方向下繼續(xù)執(zhí)行。但是,如果我們現(xiàn)在想要Java實(shí)現(xiàn)類似恢復(fù)模型的行為,希望異常在處理之后繼續(xù)往下進(jìn)行執(zhí)行,那么有什么解決的辦法嗎?
思路:
把try塊放在while循環(huán)里,這樣就能不斷的進(jìn)入try塊,直到獲得滿意的結(jié)果結(jié)束。
下來看下面的程序:
package exceptions;
class MyException extends Exception {
}
public class ContinueException {
private static int count;
private static final int COUNTNUMBER = 1;
public static void main(String[] args) {
while (true) {
try {
if (++count == COUNTNUMBER) {
throw new MyException();
}
System.out.println("Continue run after throw MyException");
} catch (MyException e) {
// TODO: handle exception
System.out.println("Caught MyException");
}finally {
if(count == COUNTNUMBER + 1) break;
}
}
}
}
程序執(zhí)行結(jié)果為:
Caught MyException
Continue run after throw MyException
從結(jié)果我們可以看到,在異常處理完之后,程序繼續(xù)向下執(zhí)行了,打印出了結(jié)果。
這個(gè)程序給我們的思路就是:如果把try塊放在循環(huán)里,并為拋出異常的語(yǔ)句之前建立一個(gè)條件語(yǔ)句,就有可能根據(jù)條件語(yǔ)句使下次執(zhí)行的時(shí)候,跳過拋出異常的地方,向下執(zhí)行。
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請(qǐng)查看下面相關(guān)鏈接
相關(guān)文章
Netty分布式從recycler對(duì)象回收站獲取對(duì)象過程剖析
這篇文章主要為大家介紹了Netty分布式從recycler獲取對(duì)象的過程源碼剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03
java synchronized實(shí)現(xiàn)可見性過程解析
這篇文章主要介紹了java synchronized實(shí)現(xiàn)可見性過程解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09
ThreadPoolExecutor中的submit()方法詳細(xì)講解
在使用線程池的時(shí)候,發(fā)現(xiàn)除了execute()方法可以執(zhí)行任務(wù)外,還發(fā)現(xiàn)有一個(gè)方法submit()可以執(zhí)行任務(wù),本文就詳細(xì)的介紹一下ThreadPoolExecutor中的submit()方法,具有一定的參考價(jià)值,感興趣的可以了解一下2022-04-04
spring?NamedContextFactory在Fegin配置及使用詳解
在我們?nèi)粘m?xiàng)目中,使用FeignClient實(shí)現(xiàn)各系統(tǒng)接口調(diào)用變得更加簡(jiǎn)單,?在各個(gè)系統(tǒng)集成過程中,難免會(huì)遇到某些系統(tǒng)的Client需要特殊的配置、返回讀取等需求。Feign使用NamedContextFactory來為每個(gè)Client模塊構(gòu)造單獨(dú)的上下文(ApplicationContext)2023-11-11
mybatis中的擴(kuò)展實(shí)現(xiàn)源碼解析
這篇文章主要介給大家紹了關(guān)于mybatis中擴(kuò)展實(shí)現(xiàn)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01

