處理異常時,在catch中return會怎麼樣?
在實際操作中,還有一個很有意思的小問題,在try-catch-finally,如果catch中return了,還會執行finally嗎
答案是:會的,因為finally的作用就是處理善後,但是是在return前執行
public class a{ public static void main(String[] args){ System.out.println(gi()); } public static int gi(){ int b=10; try{ System.out.println(b/0); b=99; } catch(ArithmeticException e){ b=66; return b; }finally{ b=20; //return b; } } }
上面的程式碼如果,造成執行最後的結果是66
這時候可能有人會好奇,不是說在處理異常中,catch哪怕return了,也會執行finally嗎?
實際上,在 try-catch-finally中 ,catch裡面return了也會,還是會執行finally
具體執行步驟:
catch: b=66 ---> return b=return 66 ---> finally:b=20 ---> 結束程式
而我們,如果把註釋裡面的 return b也放出來
具體執行步驟變為:
catch: b=66 ---> return b=return 66 ---> finally:b=20 retun b=return 20 ---> 結束程式
也就是說在finally中,如果沒有return,而catch中有return,則return的值在catch中就已經確認,
隨後執行的finally,無論發生什麼,只要沒有return,就不會改變最終輸出的結果
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69917874/viewspace-2678286/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- python異常處理之returnPython
- 在 SQL Server 中使用 Try Catch 處理異常SQLServer
- Java之異常處理try{}catch(){}Java
- 異常-try...catch的方式處理異常1
- 異常-try...catch的方式處理異常2
- pip install scrapy 報異常時怎麼處理?
- dns異常怎麼修復 dns配置異常怎麼處理DNS
- 無需寫try/catch,也能正常處理異常
- dns異常是什麼意思 dns異常怎麼處理DNS
- PHP 的異常處理之try和catch用法小結PHP
- JAVA的異常處理機制(一)——try...catch...finallyJava
- dns解析狀態異常怎麼處理 dns解析異常怎麼修復DNS
- 說說在 Python 中如何處理異常Python
- SpringBoot中異常處理Spring Boot
- 異常篇——異常處理
- Swift4 異常處理Try_Catch的使用之初見Swift
- 異常處理
- Dubbo 自定義異常,你是怎麼處理的?
- 怎樣在 Laravel 中處理前端認證Laravel前端
- Ruby中的TypeError異常處理Error
- 在實際工作中,異常處理的準則
- JSP 異常處理如何處理?JS
- 異常-throws的方式處理異常
- React 異常處理React
- JS異常處理JS
- oracle異常處理Oracle
- Python——異常處理Python
- Python異常處理Python
- ThinkPHP 異常處理PHP
- JavaScript 異常處理JavaScript
- JAVA 異常處理Java
- 異常的處理
- golang - 異常處理Golang
- 異常處理2
- 異常處理1
- Java 異常處理Java
- Abp 異常處理
- JAVA異常處理Java