私はJavaでコンパイラ型チェッカーを実装しています。私のtypeChecking
クラスは、与えられた入力ファイル(プログラム)が意味的に間違っている場合にRuntimeExceptions
を投げるメソッドで構成されています。呼び出されたメソッドの複数の例外の出力
私のプログラムがエラーを発見したときに例外がスローされ、プログラムが終了します。私が望む機能は、typeChecking
クラスで例外が発生した場合、すべての例外メッセージをどこかに保存して、Main
クラスに出力することです。
擬似コード例:
// Main class part of code
public static void main(String[] args){
call typeChecking method
if an exception (or more) occurred in the typeChecking class
then print all the exception messages
else no semantic errors found
then do something else
}
私は何を思ったことは、静的String
配列を作成し、その中のすべての例外メッセージを追加することです。私のMain
クラスでは、配列のサイズが0かどうかを調べるつもりです。そうでない場合は、例外が発生したことを意味します。
これを行うにはもっと良い方法はありますか?
これは非常に興味深い質問です。一方では、コンパイラの仕事をしたいと思っています。これはソフトウェアエンジニアリングではかなり高度なトピックとしてよく見られます。一方;あなたはあなたのメインの方法で "本当のもの"を行うことをお勧めします。後で何とかして、あなたはまだ良いデザインについてあまり知らないことを示しています。それで、これがいくつかの "宿題"プロジェクトでない限り、コンパイル構築のようなトピックに飛び乗る前に、実際にOOの設計(例えば、Fowlerによる "SOLID"ルールのチェックアウト)について教えてください。 – GhostCat
問題は、とにかく問題を報告するために間違った方法かもしれません。あなたは "(以上)"の例外を持つことはできません。発見された1つ以上のエラーに関する情報を含むオブジェクトのリストを返すことがより良い方法です。 – Arkadiy
私が知る限り、例外を「キャッチして続ける」ことはできません。 – apokryfos