`
wangyanlong0107
  • 浏览: 499730 次
  • 性别: 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

    标题 "try-catch-finally-return-in-finally.rar_return" 提到了 `try-catch-finally` 结构与 `return` 语句的交互,这涉及到程序执行流程的关键方面。 `try` 块是用来包含可能会抛出异常的代码。如果在 `try` 块中...

    try-catch-finally捕获异常

    try-catch-finally语句是Java语言中一种常用的异常处理机制,当程序在执行过程中出现异常时,可以使用try-catch-finally语句来捕获和处理异常。下面将详细介绍try-catch-finally语句的使用方法和注意事项。 一、try...

    使用try-catch-finally处理异常

    即使在`try`或`catch`块中有return语句,`finally`块的代码也会被执行。 5. **多层嵌套** 你还可以在`try-catch-finally`结构内部嵌套另一个`try-catch-finally`结构,以处理更复杂的情况。这种方式使得异常处理...

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

    try、catch、finally、return 执行顺序详细讲解 try、catch、finally、return 执行顺序是 Java 编程语言中的一种 exception 处理机制,用于处理程序中的异常情况。下面我们来详细讲解 try、catch、finally、return ...

    try_catch_finally异常处理java

    即使`try`或`catch`块中存在`return`语句,`finally`块的代码也会被执行。这确保了程序的整洁和资源的有效管理。 在Java中,`try-catch-finally`结构可以单独使用,也可以嵌套使用。嵌套的`try-catch-finally`允许...

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

    2. 如果`finally`块有`return`语句,无论`try`块是否包含`return`,`finally`块的`return`语句都将决定最终的返回值,因为`finally`总是被执行。 理解这一点对于编写健壮、可靠的Java代码至关重要,特别是涉及资源...

    try-catch-finally执行顺序验证

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

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

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

    java 中finally语句块与return的执行关系

    在 try-catch-finally 结构中,finally 语句块的执行顺序是非常重要的。下面我们来详细探讨 finally 语句块与 return 的执行关系。 首先,需要了解的是,在 try-finally 或者 catch-finally 中,如果 try 或者 ...

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

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

    java try…catch捕获异常的实例

    即使在`try`或`catch`块中有`return`语句,`finally`块中的代码也会被执行: ```java try { // 代码 } catch (ExceptionType1 e1) { // 处理 } catch (ExceptionType2 e2) { // 处理 } finally { // 清理资源,...

    375.373.JAVA基础教程_异常处理-处理异常:try-catch方式(375).rar

    即使在try或catch块中有return语句,finally块中的代码也会被执行。 4. **throw**:程序员可以使用throw关键字手动抛出一个异常,这在检测到错误条件时非常有用。 5. **throws**:如果方法可能抛出异常但不处理,...

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

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

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

    在这个过程中,函数会将`try`或`catch`块中的`return`语句返回的值暂存起来,然后执行`finally`块。 如果在`finally`块中也有`return`语句,那么这个`return`值会覆盖之前暂存的值。也就是说,最终返回给调用者的值...

    exception-try-catch-java

    即使`try`或`catch`块中有`return`语句,`finally`块的代码仍然会被执行。 `throw`关键字用于手动抛出一个异常。程序员可以在检测到错误条件时主动抛出异常,而不是等待Java运行时系统自动抛出。 ```java throw ...

    Java finally语句到底是在return之前还是之后执行?

    在Java编程语言中,`finally`语句块是一个非常关键的结构,用于确保特定代码无论在...理解`finally`的执行顺序对于编写健壮的、易于维护的代码至关重要。在实际开发中,我们应该充分利用这一特性来提高代码的可靠性。

    Java异常处理-异常处理的方式1

    如果try块中的异常与`catch`块的异常类型匹配,那么对应的`catch`块就会被执行。如果所有`catch`块都不匹配,异常将继续向调用栈传递。 - `finally`块包含的代码无论是否发生异常都会执行,通常用来进行资源清理等...

    Java 实例 - Finally的用法源代码-详细教程.zip

    - 即使`return`语句在`try`或`catch`块中出现,`finally`块的代码也会在返回之前执行。但要注意,`finally`块中的`return`语句会覆盖掉`try`或`catch`中的`return`结果。 3. 示例代码: ```java try { // 可能...

    C#中的try catch finally用法分析

    即使在`try`或`catch`块中有`return`语句,`finally`块的代码也会被执行。 ```csharp finally { // 无论是否发生异常都会执行的代码 } ``` 在示例中,无论`j`的值是否为0,`finally`块的`Console.WriteLine(j....

    trycatch.zip

    本示例中的"trycatch.zip"文件内容就是展示了如何在Golang中模拟`try...catch`和`try...catch...finally`。 Golang的核心错误处理方式是通过返回错误值。通常,函数会返回一个错误值,如果在执行过程中遇到问题,就...

Global site tag (gtag.js) - Google Analytics