2012-05-02 6 views
0

私はチーム・プロジェクトに取り組んでいると私は、次のような状況で午前:HandleErrorを使用して特定のタイプのExceptionのみを処理し、残りの例外を正常にスローする方法はありますか?

私は自分の例外クラスを作成し、私はタイプmyExceptionのすべてスローされた例外を処理し、自動的にエラー・ビューにリダイレクトされるようにしたいですここで私は間違いなくエラーを表示しますが、これは問題ありません。これは私が私のWeb.configファイルに追加するものです。

<customErrors mode="On" defaultRedirect="Error" /> 

問題私は例外のすべての残りの部分は、スタックトレース、ソースファイルを含め、それに関するすべての情報を、見て、正常にスローされるようにしたいですラインエラーは、チームプロジェクトにとって本当に良いでしょう。

Iは[のHandleError(ExceptionType = typeof演算(myException)]を試みたが、それは全く使用されない。

Iはまた、コントローラのonExceptionを機能を無効にすることを試み、例外iは次いでmyExceptionない場合再びそれを投げるが、私はまだエラー表示になるだろう。

protected override void OnException(System.Web.Mvc.ExceptionContext filterContext) 
{ 
    if (filterContext.Exception.GetType() != typeof(myException)) { 
     throw filterContext.Exception; 
    } 
    base.OnException(filterContext); 
} 

仕事ができる任意のアイデアを?

感謝。

答えて

1

あなたはグラムかもしれません(すべてのエラーに対してスタックトレースが表示されるように)カスタムエラーをオフにして、必要なコントローラ/ビューに必要な例外をリダイレクトする(フレンドリーなページが表示されるようにする) 。

あなたはすべてのあなたのコントローラのベースコントローラを定義し、以下のようなもので、そのonExceptionをメソッドをオーバーライドすることができます:

 if (filterContext.Exception.GetType() == typeof(YourCustomException)) 
     { 
      filterContext.ExceptionHandled = true; 
      filterContext.Result = RedirectToAction("ActionName", "ControllerName", new { customMessage = "You may want to pass a custom error message, or any other parameters here"}); 
     } 
     else 
     { 
      base.OnException(filterContext); 
     } 
関連する問題