在 try catch 块中返回语句
虽然这是不好的做法,但可以在异常处理块中添加多个 return 语句:
public static int returnTest(int number){
try{
if(number%2 == 0) throw new Exception("Exception thrown");
else return x;
}
catch(Exception e){
return 3;
}
finally{
return 7;
}
}
此方法将始终返回 7,因为在返回任何内容之前执行与 try / catch 块关联的 finally 块。现在,最终有了 return 7;
,这个值取代了 try / catch 返回值。
如果 catch 块返回原始值并且随后在 finally 块中更改了原始值,则将返回 catch 块中返回的值,并且将忽略 finally 块中的更改。
以下示例将打印 0
,而不是 1
。
public class FinallyExample {
public static void main(String[] args) {
int n = returnTest(4);
System.out.println(n);
}
public static int returnTest(int number) {
int returnNumber = 0;
try {
if (number % 2 == 0)
throw new Exception("Exception thrown");
else
return returnNumber;
} catch (Exception e) {
return returnNumber;
} finally {
returnNumber = 1;
}
}
}