2016-05-17 17 views
-1

を表示していないキャッチ/試してみてください。私のクラスでは、私はこの書かれていたので、ちょっとそこ例外エラーメッセージ

while (idLoopTrigger == true) { 
     try { 

      System.out.println("Please enter id: "); 
      id = in.nextLine(); 

      if (id.matches("[a-zA-Z]{3}-\\d{4}")) { 
       idLoopTrigger = false; 
      } 

     } catch (Exception ex) { 

      //print this error message out 
      System.out.println(ex.getMessage()); 

     } 

    } 

だから、ループがするまで、以下となります。私のメインプログラムで、その後

public void setId(String id) { ... 
    if (id.matches("[a-zA-Z]{3}-\\d{4}")) { 
     this.id = id; 
    } else { // id is invalid: exception occurs 
     throw new IllegalArgumentException("Inventory ID must be in the " 
      + "form of ABC-1234"); 
    } 

} 

を私はこれをしませんでしたユーザーは正しい情報を入力しますが、私のクラスからの例外メッセージは表示されません。思考?

+1

ループ内のどこでも 'setId()'を呼び出さないでください。例外はスローされません。 –

+0

tryブロック内のコードが例外をスローしますか?それがスローされない限りcatchブロックは実行されません –

+0

どこでも 'setId()'は呼び出されませんが、実際には 'nextLine'のすべての' id'をテストしています。 –

答えて

1

setId()メソッドの内容を呼び出す代わりにmain()に近似しているようです。

私はこのsetId()方法が住むことになっている場所がわからないんだけど、それは同じクラスで定義されていますと仮定して、あなたのmain()

while (idLoopTrigger == true) { 

    try { 
     System.out.println("Please enter id: "); 
     id = in.nextLine(); 
     setId(id); 
     idLoopTrigger = false; 

    } catch (Exception ex) { 

     //print this error message out 
     System.out.println(ex.getMessage()); 
    } 

} 

これは、あなたが探しているものに、少なくとも近いように思えますために。

+0

は魅力的に機能しました - 明確化のおかげで! –

関連する問題