我需要一些像这样的东西:
public ActionResult Ac()
{
try {
//stuff...
}
catch(MyException ex)
{
//handle
}
}
但没有在每个动作方法中使用try catch
答案 0 :(得分:2)
使用Exception Filters进行异常处理。
答案 1 :(得分:2)
您希望使用HandleErrorAttribute注释您的类 - http://msdn.microsoft.com/en-us/library/system.web.mvc.handleerrorattribute.aspx。
如果上面内置处理程序的功能不够,那么你可以定义自己的实现IExceptionFilter的类 - OnException方法接受一个ExceptionContext对象,其中包含Result和HttpContext属性,可用于控制结果,如:
public class MyHandleErrorAttribute : FilterAttribute, IExceptionFilter
{
public void OnException(ExceptionContext filterContext)
{
Exception e = filterContext.Exception;
// Do some logging etc. here
if (!filterContext.ExceptionHandled && filterContext.HttpContext.IsCustomErrorEnabled)
{
ViewResult lResult = ...
filterContext.Result = lResult;
filterContext.ExceptionHandled = true;
filterContext.HttpContext.Response.Clear();
filterContext.HttpContext.Response.StatusCode = 500;
filterContext.HttpContext.Response.TrySkipIisCustomErrors = true;
}
}
答案 2 :(得分:1)
怎么样
[HandleError(ExceptionType = typeof(MyException ), View = "MyErrView"))]
public ActionResult Ac()
{
//stuff
}
但使用自定义HandleError
属性来处理您要定位的例外类型。 This SO question应该给你一个良好的开端。