我有一个要求,我需要以顺序方式调用多个方法。但是,如果任何一种方法由于验证而失败,则程序不应继续。我不能使用"抛出异常,因为这些实际上并不是例外而不是满足我要求的条件,在满足它之后,我不希望程序继续。
以下是一段代码和示例。即使我使用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。
答案 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当前正在抛出异常,但实际上并没有在方法中抛出一个异常。但是,异常仅应用于未定义的行为(特别是与您无法控制的情况有关,例如外部代码)。如果可能,最好提供用户友好的错误并继续程序,否则优先退出。
无关的提示: