gpt4 book ai didi

java - java中finally子句中的return语句有危险吗?

转载 作者:行者123 更新时间:2023-12-01 10:34:25 25 4
gpt4 key购买 nike

看下面的代码。尽管 catch 子句本身会引发异常,但 finally block 的 return 语句会导致该异常被吞掉。即使 catch block 中出现问题,此方法也会返回 420。

private static int foo() throws Exception
{
try {
throw new Exception("try");

} catch (Exception ex) {
throw new Exception("catch");
} finally {
String s = "";
return 420;
}


}

最佳答案

如果遇到异常,您应该返回其他内容。仅当引发该异常的变量在最终返回语句中使用时,该异常才是危险的。考虑一下:

int a;
try{
//...
}catch(Exception e){
//a throws an exception somehow
}finally{
returns a;
}

当您在另一侧使用 a 时,如下所示:

a += 1;

您遇到危险异常

我的建议是这样做:

try{
//...
}catch(Exception e){
//a throws an exception somehow
returns -1;
}finally{
returns a;
}

另一边:

if(return_value == -1) // skip or do something else;

这样,您就不会在另一端遇到不可预测的异常。

关于java - java中finally子句中的return语句有危险吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34865419/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com