这是复杂问题的最简单示例。我没有在整个互联网的任何地方找到这个问题的例子。我正在验证返回Boolean的validationMethod中的输入。现在,我需要在调用类时使用此方法(如果return为true则运行flow,如果return为false则捕获异常)。
public class StringUtil{
public static boolean validateNumInput(String UserInput)
{
if(UserInput.matches("[0-9]+")){
return true;
} return false;
}
}
public class Main{
public static void main(String[] args){
String a="012*+";
try{
if(StringUtil.validateNumInput(a)){
System.out.println(StringUtil.validateNumInput(a));
}
}catch(Exception e){
System.out.println("Big problem");
}
}
}
答案 0 :(得分:0)
根据the documentation,您可以使用布尔谓词过滤catch子句。因此,您的验证方法需要抛出一个可以在catch子句中过滤的异常。但是,如果您正在这样做,您可能还可以滚动自己的自定义异常,而不必处理布尔值。另一种选择是,在您的调用代码中,将返回代码视为返回代码并抛出您自己的异常。
选项1:
public class StringUtil{
public static boolean validateNumInput(String UserInput)
{
if(UserInput.matches("[0-9]+")){
return true;
}
throw new Exception ("Validation failed!");
}
}
public class Main{
public static void main(String[] args){
String a="012*+";
try{
if(StringUtil.validateNumInput(a)){
System.out.println(StringUtil.validateNumInput(a));
}
}catch(Exception e) when (e.Message == "Validation failed!") {
System.out.println("Big problem");
}
}
}
选项2:
public class Main{
public static void main(String[] args){
String a="012*+";
try{
if(StringUtil.validateNumInput(a)){
System.out.println(StringUtil.validateNumInput(a));
} else {
throw new Exception ();
}
}catch(Exception e) {
System.out.println("Big problem");
}
}
}