【发布时间】:2018-01-18 19:07:28
【问题描述】:
我正在开发 ASP.Net 应用程序,目前正在努力处理异常。我已经设法进行了适当的异常处理,但我真的不知道如何处理不适合 UI 的内部错误。
void Application_Error(object sender, EventArgs e)
{
Exception ex = Server.GetLastError();
LogManager.GetCurrentClassLogger().Error(ex);
Response.Clear();
HttpException httpEx = ex as HttpException;
if (httpEx == null)
{
switch(ex.GetType())
{
//Convert ex into httpexception
//with statuscode that depends on the exception type
}
}
RouteData routeData = new RouteData();
routeData.Values.Add("controller", "Error");
routeData.Values.Add("action", "Handler");
routeData.Values.Add("exception", httpEx);
Server.ClearError();
Response.TrySkipIisCustomErrors = true;
var rc = new RequestContext(new HttpContextWrapper(Context), routeData);
var c = ControllerBuilder.Current.GetControllerFactory().CreateController(rc, "Error");
c.Execute(rc);
}
【问题讨论】:
-
为什么要将异常转换为
HttpException? -
只需创建一个 HttpException 实例,包装原始异常并传递所需的 httpCode 和消息。
-
@larsbe,因为我想将它传递给管理异常的视图,我需要状态码。