Javaで例外がスローされた後も実行を継続する 質問する

Javaで例外がスローされた後も実行を継続する 質問する

例外をスローしようとしていますが (try catch ブロックを使用せずに)、例外がスローされた直後にプログラムが終了します。例外をスローした後、プログラムの実行を続行する方法はありますか? 別のクラスで定義した InvalidEmployeeTypeException をスローしますが、これがスローされた後もプログラムを続行したいと思います。

    private void getData() throws InvalidEmployeeTypeException{

    System.out.println("Enter filename: ");
    Scanner prompt = new Scanner(System.in);

    inp = prompt.nextLine();

    File inFile = new File(inp);
    try {
        input = new Scanner(inFile);
    } catch (FileNotFoundException ex) {
        ex.printStackTrace();
        System.exit(1);
    }

    String type, name;
    int year, salary, hours;
    double wage;
    Employee e = null;


    while(input.hasNext()) {
        try{
        type = input.next();
        name = input.next();
        year = input.nextInt();

        if (type.equalsIgnoreCase("manager") || type.equalsIgnoreCase("staff")) {
            salary = input.nextInt();
            if (type.equalsIgnoreCase("manager")) {
                e = new Manager(name, year, salary);
            }
            else {
                e = new Staff(name, year, salary);
            }
        }
        else if (type.equalsIgnoreCase("fulltime") || type.equalsIgnoreCase("parttime")) {
            hours = input.nextInt();
            wage = input.nextDouble();
            if (type.equalsIgnoreCase("fulltime")) {
                e = new FullTime(name, year, hours, wage);
            }
            else {
                e = new PartTime(name, year, hours, wage);
            }
        }
        else {


            throw new InvalidEmployeeTypeException();
            input.nextLine();

            continue;

        }
        } catch(InputMismatchException ex)
          {
            System.out.println("** Error: Invalid input **");

            input.nextLine();

            continue;

          }
          //catch(InvalidEmployeeTypeException ex)
          //{

          //}
        employees.add(e);
    }


}

ベストアンサー1

例外をスローすると、メソッドの実行が停止し、呼び出し元メソッドに例外がスローされます。throw常に現在のメソッドの実行フローを中断します。/blockは、例外をスローする可能trycatchのあるメソッドを呼び出すときに記述できるものですが、例外をスローすることは、異常な状態のためにメソッドの実行が終了したことを意味し、例外は呼び出し元メソッドにその状態を通知します。

例外とその仕組みについては、このチュートリアルをご覧ください -http://docs.oracle.com/javase/tutorial/essential/exceptions/

おすすめ記事