2016-05-24 7 views
0

ASP.NET MVCアプリケーションには、無視する必要のある例外が多数発生する従来のライブラリがあります。私は、これはコードのにおいである知っているこのエラーを完全に無視するには.NET MVCを取得

protected void Application_Error() 
{ 
    if (exception is PolicyViolationException) 
    {    
     Response.Clear(); 
     Server.ClearError(); 
    } 
} 

のようなのApplication_Errorでこれらの例外を無視し、私は現時点ではそれについて多くを行うことはできません。

Application_Errorに到達することさえ止める方法はありますか?

+0

はい、レガシーライブラリが使用されている場所であれば、トラップしてください。それは彼らがバブルアップさせることのトレードオフに値するのでしょうか?あなただけが言うことができます。 –

+0

コードが呼び出されたソースで例外をトラップできると思います。率直に言って、あなたの現在のアプローチはおそらくもっと良いと思います。 –

+0

私の現在のアプローチの唯一の問題は、ログ処理ツール(Stackify)を使用して未処理の例外をキャッチし、ログを詰まらせることです。 – Craig

答えて

3

ラッパークラス(アダプターパターン)を使用します。次に、レガシー・ライブラリーを参照する代わりに、ラッパー・クラスを使用します。また、ラッパーは必要に応じて例外を処理(または無視)できます。

class Legacy 
{ public void DoThis() 
    { ... } 
    public void DoThat() 
    { ... } 
} 

class Wrapper 
{ Legacy _legacy; 
    public Wrapper() { _legacy = new Legacy(); } 
    public void DoThis() 
    { 
     try { 
      _legacy.DoThis(); 
     } 
     catch (PolicyViolationException exception) { 
      //ignore 
     } 
    } 
... 
} 

この例では、レガシークラスは決して参照しません。代わりに、クラスWrapperを参照します。その後、Wrapperのインスタンスから抜け出すことはないので、私は例外を心配する必要はありません。

関連する問題