私にはcatch (Exception ex)
が必要です。メッセージを変更してから、再スローしてください。実際のタイプを保持する新しいメッセージでExceptionとRethrowをキャッチ
I throw new Exception(newMessage, ex);
の場合、例外のランタイムタイプが失われます。
I throw;
の場合、実行時の型は保持できますが、メッセージは変更されません。
私はキャッチしているので、派生型ex
がどのようなものか分からないため、適切な型を構築できません。
もちろん、もし私がthrow ex;
なら、私はスタックトレースを失います。
ex
のメッセージを再フォーマットし、任意の奇妙な脆い反射ハックに頼ることなく、スタックまたは実行時型情報を失うことなく、それを再スローする方法はありますか?
他の型(アプリケーションの種類は?)を投げて、元の例外を内部例外として設定します。 –
なぜ、InnerExceptionの最も内側の例外を使うことができないのですか?あなたはどこかに "catch"型付きを持っていますか? –
ベース 'Exception'クラスから派生したカスタム例外クラスを使用する必要があります。このようにして、元の例外がマルチレイヤー・アーキテクチャーでどのレイヤーで発生したかを追跡し、すべての例外を1か所に記録することができます。 – Koder101