處理異常時,在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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 在 SQL Server 中使用 Try Catch 處理異常SQLServer
- Java之異常處理try{}catch(){}Java
- 異常-try...catch的方式處理異常1
- 異常-try...catch的方式處理異常2
- python異常處理之returnPython
- dns異常怎麼修復 dns配置異常怎麼處理DNS
- pip install scrapy 報異常時怎麼處理?
- [CareerCup] 14.2 Try-catch-finally Java中的異常處理Java
- 無需寫try/catch,也能正常處理異常
- c# 異常處理try catch finally_throwC#
- dns異常是什麼意思 dns異常怎麼處理DNS
- dns解析狀態異常怎麼處理 dns解析異常怎麼修復DNS
- 當XMLHTTP返回的XML資料流中沒有資料時怎麼樣進行異常處理?XMLHTTP
- PHP 的異常處理之try和catch用法小結PHP
- C++異常處理:try,catch,throw,finally的用法C++
- c#之異常處理tcbs_try_catch_finallyC#
- 說說在 Python 中如何處理異常Python
- java中異常處理finally和return語句的執行順序Java
- JAVA的異常處理機制(一)——try...catch...finallyJava
- 異常篇——異常處理
- Dubbo 自定義異常,你是怎麼處理的?
- Swift4 異常處理Try_Catch的使用之初見Swift
- 怎樣在 Laravel 中處理前端認證Laravel前端
- 異常處理
- SpringBoot中異常處理Spring Boot
- Python 中的異常處理Python
- React 16 中的異常處理React
- Ruby中的TypeError異常處理Error
- 在實際工作中,異常處理的準則
- 異常-throws的方式處理異常
- 異常處理與異常函式函式
- JavaScript 異常處理JavaScript
- ThinkPHP 異常處理PHP
- React 異常處理React
- 08、異常處理
- JAVA 異常處理Java
- JAVA異常處理Java
- Abp 異常處理