try catch finally throw 执行顺序

阅读: 评论:0

try catch finally throw 执行顺序

try catch finally throw 执行顺序

1. finally中的语句,无论什么情况都会执行。
2. 编译器不建议我们在finally中写return语句,一般情况下finally中也不会写return。
3. 当try、catch中有return语句,且try中有异常;先try,然后catch,然后finally,最后执行return语句。
4. 当try、catch中有return语句,且try中无异常;先try,然后finally,最后return。
5. 当finally中也有return语句,且有异常,先try,然后catch,然后finally,finally中的return会让try catch中的return失效。
6. 要注意函数的返回值类型,finally中的语句对返回值进行修改时,基本数据类型的返回值不受finally语句影响,应用类型(集合等)会受影响。
因为当try/catch中带有return时,会先执行return前的代码,然后暂时保存需要return的信息,再执行finally中的代码,最后再通过return返回之前保存的信息。
7. return和throw,从语句流转的角度上看,这两个语句是等效的;return和throw都是使程序跳出当前的方法,一同出现自然就是冲突的。如果非要跳出两次那么后者会覆盖前者。// 参考文献:/** .html* * * * */package ammer;import java.util.ArrayList;public class TryCatchTest {public static void main(String[] args) {int res = exTestBasicType();System.out.println("Result: " + res); // Result: 1System.out.println("===================");ArrayList<String> list = exTestInstanceType();System.out.println("listSize: " + list.size()); // listSize: 2System.out.println("===================");int resBasicTypeWithThrow = exTestBasicTypeWithThrow();System.out.println("resBasicTypeWithThrow: " + resBasicTypeWithThrow); // resBasicTypeWithThrow: 3System.out.println("===================");ArrayList exTestInstanceTypeWithThrow = exTestInstanceTypeWithThrow();System.out.println("exTestInstanceTypeWithThrow: " + exTestInstanceTypeWithThrow.size());}public static int exTestBasicType() {int i = 0;try {i++;System.out.println("try: " + i);return i;} catch (Exception e) {System.out.println("catch: " + i);} finally {System.out.println("finally: " + i);i = 9;}return 7;}public static ArrayList<String> exTestInstanceType() {ArrayList<String> list = new ArrayList<>();try {System.out.println("");list.add("Justin Bieber");return list;} catch (Exception e) {System.out.println("");} finally {System.out.println("");list.add("Dua Lipa");}return list;}public static int exTestBasicTypeWithThrow() {int i = 0;try {System.out.println("");i++;int a = i/0;return i;} catch (Exception e) {System.out.println("");i++;return i;
//            throw new RuntimeException(e);} finally {System.out.println("");i++;System.out.println("i: " + i);
//            return i;}}public static ArrayList<String> exTestInstanceTypeWithThrow() {ArrayList<String> list = new ArrayList<>();try {System.out.println("");list.add("Christopher Nolan");int i = 5/0;return list;} catch (Exception e) {System.out.println("");list.add("Quentin Tarantino");return list;} finally {System.out.println("");list.add("Jiang Wen");}}
}

本文发布于:2024-02-01 07:01:59,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170674211934739.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:顺序   catch   finally   throw
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23