Java 在finally中使用return时无法访问语句?
这包括:Java 在finally中使用return时无法访问语句?,java,Java,这包括: class Ex1 { public int show() { try { int a=10/10; return 10; } catch(ArithmeticException e) { System.out.println(e); } finally { System.out.println("
class Ex1 {
public int show() {
try {
int a=10/10;
return 10;
}
catch(ArithmeticException e) {
System.out.println(e);
}
finally {
System.out.println("Finally");
}
System.out.println("hello");
return 20;
}
}
另一方面,这并不是:
class Ex15 {
public int show() {
try {
int a=10/0;
return 10;
}
catch(ArithmeticException e) {
System.out.println(e);
}
finally {
System.out.println("Finally");
return 40;
}
System.out.println("hello");
return 20;
}
}
并给出无法访问的语句System.out.printlnholl;错误为什么会这样?最终有一个返回,因此您可能会遇到无法访问的代码块错误
finally
{
System.out.println("Finally");
return 40;
}
System.out.println("hello"); // unreachable code
return 20;
这实际上是Java中的编译时错误。见第节
如果
语句无法执行,因为
这是遥不可及的
finally有一个返回值,因此您可能会遇到无法访问的代码块错误
finally
{
System.out.println("Finally");
return 40;
}
System.out.println("hello"); // unreachable code
return 20;
这实际上是Java中的编译时错误。见第节
如果
语句无法执行,因为
这是遥不可及的
这是无法访问的代码。根据编译器,System.out.printlnholl;永远不会被执行
除此之外,永远不要在finally块中编写return。看看为什么你不应该
编辑:
是的,但什么能让你最终得到回报呢
这样做
这不是因为它在最后一个街区或什么的。即使删除finally关键字,仍然会出现错误
class ex15 {
public int show() {
int a = 10 / 0;
return 40;
System.out.println("hello");
return 20;
}
}
显然,如果返回40,则无法执行下一行。最后只是意味着无论发生什么,都要一直做。所以。这是不可访问的代码。根据编译器,System.out.printlnholl;永远不会被执行
除此之外,永远不要在finally块中编写return。看看为什么你不应该
编辑:
是的,但什么能让你最终得到回报呢
这样做
这不是因为它在最后一个街区或什么的。即使删除finally关键字,仍然会出现错误
class ex15 {
public int show() {
int a = 10 / 0;
return 40;
System.out.println("hello");
return 20;
}
}
显然,如果返回40,则无法执行下一行。最后只是意味着无论发生什么,都要一直做。因此。当您在finally块中放置一个return时,它后面的任何内容都将永远不会执行。return语句在这里结束方法
如果将System.out.println放在第一个方法中的return语句之后,则会出现相同的错误。当将return放在FINAL块中时,它后面的任何内容都将永远不会执行。return语句在这里结束方法
如果将System.out.println放在第一个方法的return语句之后,则会出现相同的错误。在finally块中有一个return。这使得之后的任何语句都无法访问。此外,在try块中有一个返回,在finally块中又有一个返回。这没有意义。您在finally块中有一个返回。这使得之后的任何语句都无法访问。此外,在try块中有一个返回,在finally块中又有一个返回。这没有意义。编译器会出现什么错误?只是一个10/0不是好主意的警告?可能是一个关于由于finally中的返回而无法访问的代码块的警告。请向我们显示编译器错误,否则将很难提供帮助。@pablochan:只需在行首添加4个空格。为什么这个问题是community wiki?编译器会出现什么错误?只是一个10/0不是好主意的警告?可能是一个关于由于finally中的返回而无法访问代码块的警告。请告诉我们编译器错误,否则将很难提供帮助。@pablochan:只需在行首添加4个空格。为什么这个问题是社区wiki?默认情况下是错误吗?我想我可以在Eclipse中将其更改为警告。为什么只有当finally的返回是一个错误而不是以前的编译器错误时。我不知道如何配置Eclipse来抑制它。@绝对-每个执行路径都会到达finally并返回。打印hello的代码不可能执行。Java将此视为编译器错误。第一个示例运行良好,因为finally块中没有返回。L:Eclipse有一个死代码选项,但我不确定今天晚些时候可能会检查它。这是默认错误吗?我想我可以在Eclipse中将其更改为警告。为什么只有当finally的返回是一个错误而不是以前的编译器错误时。我不知道如何配置Eclipse来抑制它。@绝对-每个执行路径都会到达finally并返回。打印hello的代码不可能执行。Java将此视为编译器错误。第一个示例运行良好,因为finally块中没有返回。L:Eclipse有一个死代码选项,但我不确定今天晚些时候是否会检查相同的内容。