我有以下代码
public class TEST
{
public static void main(String arg[]){
try
{
System.out.println("execute try");
//what should I write hear that finally does not run.
}
catch (Exception e){
System.out.println(e);
}
finally{
System.out.println("execute finally");
}
}
}
我应该在最终不运行的try或catch块中写什么。任何想法?
答案 0 :(得分:5)
System.exit(0);
答案 1 :(得分:2)
如果你想要一些不在“finally”块中运行的东西 - 不要把它放在“finally”中。最后总是运行(好吧,除了像其他人提到的一些案例)。
答案 2 :(得分:0)
您需要通过调用JVM
来关闭exit
:
System.exit(exit_status);
来自Java docs:
如果在执行try或catch代码时JVM 退出,则finally块可能不执行。同样,如果执行try或catch代码的线程被中断或终止,则即使应用程序作为一个整体继续,finally块也可能无法执行。
答案 3 :(得分:0)
最终意味着无论异常是否发生,都要执行。 除非采用可疑的策略(正如约阿希姆所说的那样),否则无法避免。
如果您在finally块中的代码不是每次都要执行,请不要使用finally构造;使用简单的if-construct代替
答案 4 :(得分:-1)
public class TEST
{
public static void main(String arg[]){
bool exitFinally = false;
try
{
System.out.println("execute try");
//what should I write hear that finally does not run.
}
catch (Exception e){
System.out.println(e);
}
finally{
if(exitFinally)
return;
System.out.println("execute finally");
}
}
}
答案 5 :(得分:-1)
将代码最终放入if。
public class TEST
{
public static void main(String arg[]){
boolean b = true;
try
{
System.out.println("execute try");
if (something()) b = false;
}
catch (Exception e){
System.out.println(e);
}
finally{
if (b){
System.out.println("execute finally");
}
}
}
}
答案 6 :(得分:-1)
使用布尔标志:
public class TEST
{
public static void main(String arg[]){
boolean success=false;
try
{
System.out.println("execute try");
//what should I write hear that finally does not run.
success=true;
}
catch (Exception e){
System.out.println(e);
}
finally{
if (!success)
{
System.out.println("execute finally");
}
}
}
}