4

現在、多くの iterfaces とその実装がすべて unity で作成されているという問題に取り組んでいます。これらのクラスには、通常のベースで例外をスローするいくつかのメソッドが含まれており、メソッドで発生したすべての例外をキャッチして別の場所で処理できるように、これらのクラスの周りに動的プロキシを作成したいと考えていました。

Unity で遊んでいるので、Unity Interception を使用してこのようなことができるのではないかと考えています。

つまり、TransparentProxyInterceptor を作成し、これらのメソッドの呼び出しの周りに try-catch ブロックをラップします。これはまったく可能ですか、それとも間違った方向に進んでいますか? ありがとう

4

1 に答える 1

6

はい、Unityインターセプト(AOP)は、例外処理を処理するための優れた方法です。次のようなあらゆる種類の動作を追加できます。

  • ログファイルまたはイベントログに書き込む
  • メールを送る
  • パフォーマンスカウンターをインクリメントする
  • タイムアウトまたはロック例外で自動再試行
  • 別のエラーを再スローします

コールハンドラは次のようになります。

public override IMethodReturn Invoke(IMethodInvocation input, GetNextHandlerDelegate getNext)
{
    IMethodReturn result = getNext()(input, getNext);

    if (result.Exception != null)
    {
        // do something
    }

    return result;
}
于 2009-06-19T05:23:43.793 に答える