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
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP