2016-04-26 11 views
0

私のカスタムエラーハンドラでそれらを扱う:キャプチャ例外と私は私のカスタムエラーハンドラをGlobal.asaxの中で定義されている

void Application_Error(Object sender, EventArgs e) 
{ 
    var exception = Server.GetLastError(); 
    var httpException = exception as HttpException; 
    Response.Clear(); 
    Server.ClearError(); 

    var routeData = new RouteData(); 
    routeData.Values["controller"] = "Error"; 
    routeData.Values["action"] = "General"; 
    routeData.Values["exception"] = exception; 
    Response.StatusCode = 500; 

    if(httpException != null) 
    { 
     Response.StatusCode = httpException.GetHttpCode(); 
     switch(Response.StatusCode) 
     { 
      case 403: 
       routeData.Values["action"] = "Http403"; 
       break; 
      case 404: 
       routeData.Values["action"] = "Http404"; 
       break; 
     } 
    } 

    IController errorController = new ErrorController(); 
    var rc = new RequestContext(new HttpContextWrapper(Context), routeData); 
    errorController.Execute(rc); 

} 
私のサービスモデルでは、このようなエラーを上げることによって、私のエラーハンドラをテストしようとしている

イム:

if(albums != null) 
{ 
    albums = null; 
    ctx.SpotifyAlbums.AddRange(albums); 
    ctx.SaveChanges(); 
} 

これは例外を発生させますが、カスタムエラーハンドラでこの例外を「キャッチ」するにはどうすればよいですか?

答えて

0

通常、特定の例外をスローするアクションを持つコントローラを作成します。

public class ErrorTestController : Controller 
{ 
    public ActionResult ThrowHttpException(int httpStatusCode) 
    { 
     throw new HttpException(httpStatusCode, "Error!"); 
    } 

    public ActionResult ThrowApplicationError() 
    { 
     Throw new Exception("Boo!"); 
    } 
} 

幻想的ではありませんが、仕事をします。 404ハンドラはテストするのが一番簡単です。悪いURLを入力するだけです。