7

私は ANTLR4 を学習していますが、パーサー ジェネレーターの使用経験はありません。

独自のビジター実装を定義するときは、BaseVisitor のメソッドをオーバーライドする必要があります (本の 40 ページにある EvalVisitor クラスのインスタンスを探しています)。メソッドの実装で例外がスローされる可能性がある場合、どうすればよいですか? 元のメソッドには空の throws 句があるため、チェック済み例外を使用できません。非チェック例外を使用する必要がありますか? (これは悪い Java 設計のようです)。たとえば、EvalVisitor クラスで、visitId メソッド (41 ページ) が 0 を返すのではなく、UndefinedId などのユーザー定義の例外をスローするとします。コードをどのように記述すればよいでしょうか?

4

1 に答える 1

5

次の 2 つのオプションがあります。

  1. ビジター メソッド自体の内部で例外を処理します。
  2. チェックされた例外をチェックされていない例外でラップします。1 つの可能性は ですがParseCancellationException、アプリケーションでそれが理にかなっているかどうかを自分で判断する必要があります。

    try {
        ...
    } catch (IOException ex) {
        throw new ParseCancellationException(ex);
    }
    
于 2013-09-05T04:25:31.793 に答える