程序java的结束基于条件

时间:2016-04-12 23:14:40

标签: java return exit

我有一个要求,我需要以顺序方式调用多个方法。但是,如果任何一种方法由于验证而失败,则程序不应继续。我不能使用"抛出异常,因为这些实际上并不是例外而不是满足我要求的条件,在满足它之后,我不希望程序继续。

以下是一段代码和示例。即使我使用Return,它仍然继续下一个方法。

public void method1(){
    System.out.println("Method 1");
    return;
}
public void method2(){
    System.out.println("Method 2");
    return;
}
public void method3(int a) throws Exception{
    System.out.println("Method 3");
    if (a==3) FinalMethod();
    return;
}
public void method4(){
    System.out.println("Method 4");
    return;
}
public void method5(){
    System.out.println("Method 5");
    return;
}

public void FinalMethod() {
System.out.println("This is the final method - end of the program");
return;
}

public void callMethod() throws Exception{
    method1();
    method2();
    method3(3);
    method4();
    method5();
}

将从Main方法调用方法callMethod。请帮我学习一下。

已编辑:如果方法3中的参数为3,则应调用Finalmethod,之后程序应该结束。我不希望它去找method4和method5。

2 个答案:

答案 0 :(得分:0)

在这种情况下,在方法块结束时调用System.exit(-1)是多余的。

假设您希望在出错时终止程序,可以在catch中使用if(如果您按照这种方式),或者在System.exit(-1)语句中使用System.exit(n)这是你如何检查错误

编辑:我还应该澄清,使用foreach(array_merge(range(0, 9), range('A', 'Z')) as $char) { echo $char; } 没有特别的意义,而不是使用任何{{1}},其中n!= 0,除非您自己的文档中另有说明

答案 1 :(得分:0)

当你从method3调用FinalMethod时,这就是目前正在进行的事情:

主要 - > callMethod - > method3 - > FinalMethod

所以当FinalMethod结束时,你回到方法3,然后从那里返回callMethod,继续运行到最后。

我要做的是make method3返回一个布尔值,如果你想退出并调用它:

public boolean method3(int a) {
    System.out.println("Method e");
    return a==3;
}

...

//In callMethod

if (method3(3)) { //If we want to exit after running method3
    FinalMethod();
    return;
}

虽然您可以使用System.exit(exitCode),但这不是一个好习惯,因为它违反了程序流程 - 程序只会在主函数结束时结束。

虽然method3当前正在抛出异常,但实际上并没有在方法中抛出一个异常。但是,异常仅应用于未定义的行为(特别是与您无法控制的情况有关,例如外部代码)。如果可能,最好提供用户友好的错误并继续程序,否则优先退出。

无关的提示:

  • 您无需在void函数结束时调用return。
  • 默认情况下,您应该将方法设为私有,并且只在需要时将其公开