2012-02-08 30 views
1

私のMVC3アプリケーションには、たくさんのコントローラとアクションがあります。アクションを実行中に例外が発生することがあります。私はそれを記録し、例外をMVCで処理できるようにしたい。この擬似コードのようなMVCでコントローラアクションを呼び出すにはどうすればよいですか?

何か:時々MVCはで蹴ることは、別の例外が発生しますので、私が欲しいもの

try { 
    MvcInvokeControllerAction(controller, action, params); 
} catch(Exception e) { 
    trace("Error while invoking " + controller + "-" + 
     action + " with " + params + " details: " + getDetails(e)); 
    throw; 
} 

は、それが最初のMVCによって処理される前に、例外をキャッチできるようにすることであると私はApplication_Error()で後者を参照し、元の例外はロットです。

どのようにこのようなフッキングを達成できますか?

答えて

1

BasecontrollorOnException Methodを上書きできます。

これは、Controllorアクション内のすべての例外のキャッチブロックになります。 Basecontrollor

protected override void OnException(ExceptionContext filterContext) 
{ 
} 

例からわずかExetndすべてのControllors

public class BaseController : Controller 
{ 

    protected override void OnException(ExceptionContext filterContext) 
    { 
     base.OnException(filterContext); 
     // Handle error here 
    } 
} 


public class TestController : BaseController 
{ 
    public ActionResult Index() 
    { 
     // If any exceptions then will be caught by 
     // BaseController OnException method 
    } 
} 
+0

どのように私は例外が伝播聞かせていますか?私はちょうど 'OnException()'を呼び出しますか? – sharptooth

+0

例を参照してください。 OnExceptionを呼び出す必要はありません。 MVcはControllorアクションのエラーを自動的にOnExceptionを呼び出します – swapneel

関連する問題