Java如何將處理完異常之后的程序能夠從拋出異常的地點向下執(zhí)行?
因為Java中的異常處理理論,支持的是終止模型,在這種模型中,拋出異常之后,程序無法返回到異常發(fā)生的地方向下繼續(xù)執(zhí)行。但是,如果我們現(xiàn)在想要Java實現(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é)果。
這個程序給我們的思路就是:如果把try塊放在循環(huán)里,并為拋出異常的語句之前建立一個條件語句,就有可能根據(jù)條件語句使下次執(zhí)行的時候,跳過拋出異常的地方,向下執(zhí)行。
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接
相關(guān)文章
Netty分布式從recycler對象回收站獲取對象過程剖析
這篇文章主要為大家介紹了Netty分布式從recycler獲取對象的過程源碼剖析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03java synchronized實現(xiàn)可見性過程解析
這篇文章主要介紹了java synchronized實現(xiàn)可見性過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-09-09ThreadPoolExecutor中的submit()方法詳細(xì)講解
在使用線程池的時候,發(fā)現(xiàn)除了execute()方法可以執(zhí)行任務(wù)外,還發(fā)現(xiàn)有一個方法submit()可以執(zhí)行任務(wù),本文就詳細(xì)的介紹一下ThreadPoolExecutor中的submit()方法,具有一定的參考價值,感興趣的可以了解一下2022-04-04spring?NamedContextFactory在Fegin配置及使用詳解
在我們?nèi)粘m椖恐?,使用FeignClient實現(xiàn)各系統(tǒng)接口調(diào)用變得更加簡單,?在各個系統(tǒng)集成過程中,難免會遇到某些系統(tǒng)的Client需要特殊的配置、返回讀取等需求。Feign使用NamedContextFactory來為每個Client模塊構(gòu)造單獨的上下文(ApplicationContext)2023-11-11