`
wangyanlong0107
  • 浏览: 482466 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

try-catch-finally与return的执行顺序

    博客分类:
  • j2se
阅读更多

      写java程序经常碰到异常,try-catch-finally与return的执行顺序不是很清晰,总是调整到编译通过就放在那里了,没有细致的研究过,碰到的次数多了,很烦!

      测试一下(一):只有try-catch return语句在try里面。javac Test.java编译时报错:缺少返回语句。

    return语句放在catch后面,成功。


public class Test{
public static void main(String args[]){
System.out.println(a());	
}
private static String a(){
try{
				//throw new Exception();
	System.out.println("In TRY");
	return "返回值";
}catch(Exception e){
System.out.println("In Catch");

}
				//finally{
				//System.out.println("In FINALLY");
				//return "返回值";
				//}
				//System.out.println("Afer finally In Return");

}

}

     测试二:


public class Test{
public static void main(String args[]){
System.out.println(a());	
}
private static String a(){
try{
				//throw new Exception();
	System.out.println("In TRY");
	return "返回值";
}catch(Exception e){
System.out.println("In Catch");

}
finally{
System.out.println("In FINALLY");

}
				//System.out.println("Afer finally In Return");
return "返回值";
}

}

 结果:

   In TRY

   In FINALLY

返回值

   测试(三):return在finally前面,编译报错finally不带有try块。


public class Test{
public static void main(String args[]){
System.out.println(a());	
}
private static String a(){
try{
				//throw new Exception();
	System.out.println("In TRY");
	return "返回值";
}catch(Exception e){
System.out.println("In Catch");

}
return "返回值";
finally{
System.out.println("In FINALLY");

}
				//System.out.println("Afer finally In Return");

}

}

 测试(四):返回值在finally块里面:


public class Test{
public static void main(String args[]){
System.out.println(a());	
}
private static String a(){
try{
				//throw new Exception();
	System.out.println("In TRY");
	return "返回值";
}catch(Exception e){
System.out.println("In Catch");

}

finally{
System.out.println("In FINALLY");
return "返回值";
}
				//System.out.println("Afer finally In Return");

}

}

 结果:与测试二一样。

测试(四):

public class Test{
public static void main(String args[]){
System.out.println(a());	
}
private static String a(){
try{
				//throw new Exception();
	System.out.println("In TRY");
	return "返回值";
}catch(Exception e){
System.out.println("In Catch");

}
System.out.println("Afer Catch before finally !");
finally{
System.out.println("In FINALLY");
return "返回值";
}
				//System.out.println("Afer finally In Return");

}

}
 结果:编译报错 finally不带有try。说明try-catch-finally必须连在一起中间不能有语句。

 

结论:try-catch-finally必须连在一起中间不能有语句。return语句只能放到finally块得后面或者是finally块里面的最后一句话。即程序的最后面。即try-(catch)-finally-return的顺序执行。

分享到:
评论

相关推荐

    try-catch-finally-return-in-finally.rar_return

    The production IfStatement : if ( Expression ) Statement else Statement is evaluated as follows:.

    try-catch-finally执行顺序验证

    try-catch-finally执行顺序验证(左边是.java文件,右边是.class文件) 提示: try、catch块内的return操作编译后会变成把return的值保存到变量var的操作。 总结: try、catch块内的return操作编译后会变成把return的值...

    try、catch、finally、return 执行顺序.doc

    try、catch、finally、return 执行顺序超详细讲解,包看包会。

    关于Java中的try-catch-finally语句和return

    第一:return语句并不是函数的终出口,如果有finally语句,这在return之后还会执行finally(return的值会暂存在栈里面,等待finally执行后再返回)  第二:finally里面不建议放return语句,根据需要,return语句...

    谈谈Java中try-catch-finally中的return语句

    我们知道return语句用在某一个方法中,一是用于返回函数的执行结果,二是用于返回值为void类型的函数中,仅仅是一个return语句(return ;),此时用于结束方法的执行,也即此return后的语句将不会被执行,当然,这种...

    Jungle68#-#[Java] try catch finally,try里有return,finally还执行么?1

    Condition 3: try中有异常,try-catch-finally里都没有return ,finally 之后有个returntry中有异常以后,根据

    try~catch~finally中关于return的问题

    在Java的异常机制中,如果finally中含有return语句,则try和catch中的return语句将会被JVM忽视

    josonle#Coding-Now#finally语句如何执行1

    - 无论try是否发生异常,finally语句都会执行- 如果try/catch中包含控制转移语句(return、continue、break),finally

    try catch finally的执行顺序深入分析

    首先执行try,如果有异常执行catch,无论如何都会执行finally,当有return以后,函数就会把这个数据存储在某个位置,然后告诉主函数,我不执行了,接下来你执行吧,所以函数就会推出

    AST反混淆js还原工具2.3(20231219)

    03 try-catch优化为try-catch-finally简化 04 辅助功能-return简写表达式还原,便于阅读理解 05 新增:大数组多解密函数(需要先自行排版,大数组-偏移函数-解密函数1-解密函数2-解密函数3) 06 修复bug-未修改常量...

    JAVA中的关键字和保留字

    catch - 3 - char - 4 - class - 4 - continue - 5 - default - 5 - do - 6 - double - 6 - else - 6 - extends - 6 - false - 7 - final - 7 - finally - 7 - float - 8 - for - 8 - if - 8 - implements - 9 - ...

    毕业就业-刷题库Java面试题大全(2021年-2022年).rar

    8. try-catch-finally 中,如果 catch 中 return 了,finally 还会执行吗? 9. 类 ExampleA 继承 Exception,类 ExampleB 继承ExampleA。 10. 常见的 RuntimeException 有哪些? 11. Java常见异常有哪些 四、并发...

    Java中finally块执行与return关系深度剖析

    Java finally语句到底是在return之前还是之后执行?Java finally执行深度剖析,具体看这篇博文:http://blog.csdn.net/lanxuezaipiao/article/details/16922895,这是里面相关的源码,欢迎大家下载使用。

    trycatchfinaly

    3. 但是如果有 finally块的话,那么,finally 几乎是必定会执行的,但是这里有一个先后顺序的问题,应该是 finally 块和 打印异常堆栈将会在另外一个线程之中执行,所以 打印的顺序就很有意思了。 4. 如果在try或者...

    java大厂面经、直击BAT

    finally 一定会被执行,如果 finally 里有 return 语句,则覆盖 try/catch 里的 return , 比较爱考的是 finally 里没有 return 语句,这时虽然 finally 里对 return 的值进行了修改,但 return 的值并不改变这种...

    java面试题之try中含return语句时代码的执行顺序详解

    主要介绍了关于java中的一道面试题,这套题就是在try中含return语句时代码的执行顺序,这个问题看似简单,却暗藏杀机啊!文中通过一个个例子详细介绍了其中玄机,需要的朋友可以参考学习,下面来一起看看吧。

    VB.Net常用语法

    在一个try………end try 过程中可以使用catch与finally两个中的一 个,或者两个一起用, 二:Protected, private, Public 封装控制 这三个关键字一般放在语句最前面,而会置于overloads与Overrides的 后面...

    C#中的yield关键字的使用方法介绍

    yield不能单独放在try-catch块中,如果try中有yield那么,这个try块后面不许跟着finally块;也不能出现在匿名方法中,所以,看起来yield似乎并不常用,但是也不是不用。我前面有一个关于迭代器的例子《C#中的迭代器...

    jdbc练习的一个工具类

    } finally { try { is.close(); } catch (Exception e) { } } url = infos.getProperty(URL); } public static Connection getConnection() { try { return DriverManager.getConnection...

    finally 一定会执行(实例代码)

    @SuppressWarnings(finally) static int compute (){ Exc e = new Exc(); e.a = 10; e.b = 10; int res = 0 ; try{ res = e.a / e.b; System.out.println(try ……); return res + 1; }catch...

Global site tag (gtag.js) - Google Analytics