2017-07-14 9 views
0

これは複雑な問題の最も簡単な例です。私はこの問題の例をインターネット全体のどこにも見当たりませんでした。私はBooleanを返すvalidationMethodの入力を検証しています。今度は、このメソッドをクラスの呼び出しに使用する必要があります(戻り値がtrueの場合はフローを実行し、falseの場合は例外をキャッチします)。ブール値が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

the documentationによると、あなたはブール述語とcatch節を絞り込むことができます。したがって、あなたの検証メソッドは、catch節でフィルタリングできる例外をスローする必要があります。しかし、もしあなたがそれをしているならば、独自のカスタム例外をロールバックし、ブール値をまったく処理する必要はありません。もう1つの選択肢は、呼び出しコードで、戻りコードを戻りコードとして扱い、独自の例外を投げることです。

オプション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"); 
     }  
    } 
} 
関連する問題