Java 中的 catch 或 finally 块中可以有 return 语句吗?


是的,可以在 catch 和 finally 块中编写方法的 return 语句。

  • 存在这样的情况:方法具有返回类型,并且我们可以根据条件在方法的任何部分返回某个值。

  • 如果我们在 catch 块中返回一个值,并且可以在方法末尾返回一个值,则代码将成功执行。

  • 如果我们在 catch 块中返回一个值,并且可以在返回一个值后在方法末尾编写一条语句,则代码将不会执行,因此它变成了不可达代码,因为我们知道 Java 不支持不可达代码。

  • 如果我们在 final 块中返回一个值,则不需要在方法末尾保留返回值。

示例 1

public class CatchReturn {
   int calc() {
      try {
         int x=12/0;
      } catch (Exception e) {
         return 1;
      }
      return 10;
   }
   public static void main(String[] args) {
      CatchReturn cr = new CatchReturn();
      System.out.println(cr.calc());
   }
} 

输出

1

示例 2

public class FinallyReturn {
   int calc() {
      try {
         return 10;
      } catch(Exception e) {
         return 20;
      } finally {
         return 30;
      }
   }
   public static void main(String[] args) {
      FinallyReturn fr = new FinallyReturn();
      System.out.println(fr.calc());
   }
} 

输出

30 

更新日期: 17-11-2023

13K+ 浏览量

启动您的职业生涯

通过完成课程取得认证

开始学习
广告
© . All rights reserved.