try,catch,finally中的return如何影响代码的执行语序
来源:互联网 发布:淘宝网开店怎么收费 编辑:程序博客网 时间:2024/06/05 22:32
1、如果try,catch,finally里面都没有return语句,正常执行顺序如下:
try代码块正常执行完成,继续执行finally代码块,最后执行finally后面的语句块;
try代码块执行出现异常,则转去执行catch块,catch块执行完后,再执行finally代码块,最后执行finally后面的语句块。
import java.util.Scanner;public class Main { static String str=""; public static void main(String[] args) { //Scanner scanner = new Scanner(System.in);在线笔试代码用 test(0); System.out.println(str); str=""; test(1); System.out.println(str); } private static void test(int i){ try{ if(i==1) throw new Exception(); else { str+="111-"; //return; } }catch (Exception e){ str+="222-"; //return; }finally { str+="333-"; //return; } str+="444";//Unreacheable statement }}输出结果:
111-333-444222-333-444
2、(1)如果finally里面有return,不管try、catch里面有没有return,finally语句块后面的代码都不会执行,编译器都会提示错误:Unreachable statement。
import java.util.Scanner;public class Main { static String str=""; public static void main(String[] args) { //Scanner scanner = new Scanner(System.in);在线笔试代码用 test(0); System.out.println(str); str=""; test(1); System.out.println(str); } private static void test(int i){ try{ if(i==1) throw new Exception(); else { str+="111-"; //return; } }catch (Exception e){ str+="222-"; //return; }finally { str+="333-"; return; } str+="444";//Unreacheable statement }}
(2)如果try、catch块里面都有return,不管finally里面有没有return,finally语句块后面的代码都不会执行,编译器都会提示错误:Unreachable statement。
import java.util.Scanner;public class Main { static String str=""; public static void main(String[] args) { //Scanner scanner = new Scanner(System.in);在线笔试代码用 test(0); System.out.println(str); str=""; test(1); System.out.println(str); } private static void test(int i){ try{ if(i==1) throw new Exception(); else { str+="111-"; return; } }catch (Exception e){ str+="222-"; return; }finally { str+="333-"; //return; } str+="444";//Unreacheable statement }}
3、不管try、catch、finally里面有没有return,都会执行的组合是:try-finally 或者 try-catch-finally。如下代码中3处标记行号地方,每一个不管用咩用,都不影响最终输出结果。
import java.util.Scanner;public class Main { static String str=""; public static void main(String[] args) { //Scanner scanner = new Scanner(System.in);在线笔试代码用 test(0); System.out.println(str); str=""; test(1); System.out.println(str); } private static void test(int i){ try{ if(i==1) throw new Exception(); else { str+="111-"; return;//1 } }catch (Exception e){ str+="222-"; return;//2 }finally { str+="333-"; return;//3 } //str+="444";//Unreacheable statement }}输出结果:
111-333-222-333-
4、在返回值方面,finally里面的return值会覆盖try、catch里面的return值。
public class Main { public static void main(String[] args) throws Exception{ //Scanner scanner = new Scanner(System.in);//在线笔试用 System.out.println(getNum(0)); System.out.println(getNum(1)); System.out.println(getNum(2)); System.out.println(getNum(4)); } /** * 测试问题:在返回值方面:finally里面的return值会覆盖try,catch里面的return值 * @param num * @return */ static int getNum(int num){ try{ int result=2/num; return result; }catch(Exception e){ return 0; }finally { if(num==0) return -1; if(num==1) return 1; } }}
输出结果:
-1110
阅读全文
0 0
- try,catch,finally中的return如何影响代码的执行语序
- return在try-catch-finally中的执行
- try...catch...finally中的return执行顺序
- Java中的try-catch-finally-return的执行顺序
- try, catch, finally, return的执行顺序
- try、catch、finally、return的执行顺序
- try、catch、finally、return的执行顺序
- try catch finally return 的执行顺序
- try、catch、finally、return的执行顺序
- try catch finally return 的执行顺序
- try catch finally return 的执行顺序
- try-catch-finally-return的执行顺序
- try、catch、finally、return的执行顺序
- try catch finally return 的执行顺序
- try-catch-finally中finally的break,return执行顺序
- try...catch...finally中的return
- try...catch...finally中的return
- java 异常捕捉 ( try catch finally )中return的影响
- Python常用数据类型和常用运算
- C++模板实现链式栈
- web前端学习日记33
- 1261: [SCOI2006]zh_tree
- 浅谈服务发现
- try,catch,finally中的return如何影响代码的执行语序
- explicit关键字
- Linux中的别名机制、异常关闭处理及撤销
- SSH框架整合过程总结
- 二、hibernate提交事务
- MySQL知识总结
- SQL Server 学习笔记之约束
- 【IDE】Eclipse的工作空间与项目
- Java中SimpleDateFormat用法详解