プロが教えるわが家の防犯対策術!

以下のようにプログラムをかいてみましたが、AssertionErrorをキャッチできません。
Fooクラス内のassert文で必ずAssertionErrorが発生するようにしています。

String[] command = {"java", "Foo"};
try{ Process process = runtime.exec(command); }
catch(IOException e){ }
catch(AssertionError ae){
System.out.println(ae.toString());
}

A 回答 (1件)

例外は質問文のような使い方をするものではありません。


Runtime.exec()で実行してしまうと、
そこで行われているJavaプログラムと、
元のプログラムで行われているJavaプログラムはいちおう別物なので、
例外の受け渡しはできません。
せいぜいエラーレベルを取得するか、
エラー結果の出力を得るくらいです。(Processクラスのメソッド参照)

やったことがないので自信ないのですが、

String[] command = {"java", "Foo"};
try{ Foo.main(); }
catch(IOException e){ }
catch(AssertionError ae){
System.out.println(ae.toString());
}

としてみたらどうでしょうか。
Fooのmainにthrows宣言を書く必要があるかもしれません。
それでもだめかもしれないけど…。
    • good
    • 0
この回答へのお礼

よく考えたら、二つのプロセスは別物なので、
例外の受け渡しはできませんよね。

ありがとうございました。

お礼日時:2003/12/13 14:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!