2017-09-19 6 views
-2

(Javaの)スタックトレース文字列から例外インスタンスを復元したいとします。 stacktrace(cause、message ...)を解析する必要があり、例外APIを使用して簡単に行うことができると考えました。 誰でも、どのようにすればいいのですか?Javaスタックトレース文字列から例外インスタンスを作成する方法

+0

'Exception'クラスには文字列パーサーがありません。なぜそれは地球上でしょうか? – SLaks

+0

あなたは何をしようとしていますか?詳細な回答をいただきありがとうございます。 – Progman

答えて

1

この問題の一般的な解決策はありません。どのThrowableクラスも独自のコンストラクタパラメータと内部ロジックを持ち、テキストからインスタンスを再作成することはできません。

例外クラスは、このように使用されることはありません。あなたがしようとしていることに応じて、解析されたデータを表すExceptionMessageクラスを作る方が良いでしょう。 throwとすることはできませんが、「String message」と「List<String> stackTraceLines」などはありません。

リテラルExceptionオブジェクトが絶対に必要な場合は、テキストだけではできません。スタックトレースを出力するのではなく、例外をserializesにするように原点を変更することができれば、それを自分で解析するのではなく、反対側で逆シリアル化することができます。

しかし、どのようなアプローチをとっても、エラーが発生しやすくなります。 printStackTraceが期待する正確な構造を持っていることを保証するものは何もありません。すべてThrowableのインスタンスがのように実際にはのシリアル化可能であることを保証するものはありません。

また、実際に説明しているのは、印刷されたスタックトレースの目的ではありません。これは、構造化されたデータフォーマットではなく、開発者にとって非公式の診断ツールであるはずです。

+0

私は実際に例外インスタンスを持つことに本当に関心がありませんが、その構造とAPIには興味があります。 "パーサ"を書くと残っていると思います... – avibh

関連する問題