- ベストアンサー
子プロセスで発生した例外を親プロセスでキャッチしたい
以下のようにプログラムをかいてみましたが、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()); }
- みんなの回答 (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宣言を書く必要があるかもしれません。 それでもだめかもしれないけど…。
お礼
よく考えたら、二つのプロセスは別物なので、 例外の受け渡しはできませんよね。 ありがとうございました。