6

私はJavaの例外処理を試しています。

ドキュメントからこれを行う方法を理解できませんが、やりたいことは、デフォルトのケースがアクティブになったときにスイッチの無効な入力を検出してエラーをスローすることです。これは私の側では間違った論理かもしれませんが、誰かが私を平易な英語で正しい方向に押し進めることができるのだろうか.

char choice = '0';
while (choice != 'q'){
     printMenu();
     System.in.read(choice);

     case '1': DisplayNumAlbums();
     case '2': ListAllTitles();
     case '3': DisplayAlbumDetail();
     case 'q': System.out.println("Invalid input...");
     return;
     default: System.out.println("Invalid input...");
     //Exception handling here
     //Incorrect input
 }            
4

2 に答える 2

4

私はあなたのエラーが慎重に検討されていると仮定しているので、あなたが求めている使用法のサンプルを作成するためにあなた自身のコードを使用します. したがって、実行中のプログラムを持つことは依然としてあなたの責任です。

あなたの場合のように、何らかのエラー状態に達したときに例外をスローできるようにするために、例外処理メカニズムが行われます。メソッドが呼び出されたと仮定すると、choiceOptionこれを行う必要があります。

public void choiceOption() throws InvalidInputException {
    char choice = "0";

    while (choice != "q"){
        printMenu();

        System.in.read(choice);
        switch(choice){
        case "1": DisplayNumAlbums();
        case "2": ListAllTitles();
        case "3": DisplayAlbumDetail();
        case "q": System.out.println("Invalid input...");
                  return;
        default: System.out.println("Invalid input...");
                 throw new InvalidInputException();
        }
    }
}

これにより、クライアント側 (テキスト、ファット クライアント、Web などの任意のクライアント) でスローされた例外をキャッチし、独自のクライアント アクションを実行できます。つまり、swing を使用している場合は JOptionPane を表示し、ビューテクノロジーとしてJSFを使用しています。

InvalidInputException例外を拡張する必要があるクラスであることを忘れないでください。

于 2012-08-25T04:22:46.470 に答える
2

コードがメソッド内にある場合、メソッドが例外をスローすることを示すことができます。

void method throws Exception(...){}

メソッドの呼び出しは try-catch ブロック内にある必要があります

try{
 method(...);
}catch(SomeException e){
 //stuff to do
}

または、あなたはただすることができます

while(){
 ...
 try{
  case...
  default:
   throw new IllegalArgumentException("Invalid input...");
 }catch(IllegalArgumentException iae){
  //do stuff like print stack trace or exit
  System.exit(0);
 }
}
于 2012-08-25T04:28:44.533 に答える