• ベストアンサー

子プロセスで発生した例外を親プロセスでキャッチしたい

以下のようにプログラムをかいてみましたが、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()); }

質問者が選んだベストアンサー

  • ベストアンサー
  • liar_adan
  • ベストアンサー率48% (730/1515)
回答No.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宣言を書く必要があるかもしれません。 それでもだめかもしれないけど…。

you-mor
質問者

お礼

よく考えたら、二つのプロセスは別物なので、 例外の受け渡しはできませんよね。 ありがとうございました。

関連するQ&A