【发布时间】:2014-09-28 05:02:43
【问题描述】:
我正在尝试抛出一些异常,在 HandleException 属性中捕获它并将其正确返回给客户端。
这是一个例子:
[HandleException(Type = typeof(UserNotFoundException), Status = HttpStatusCode.NotFound)]
[HandleException(Type = typeof(LoginFailedException), Status = HttpStatusCode.Unauthorized)]
public UserProfile Login(UserCredentials userCred)
在我的 Login() 函数中,我要么抛出 UserNotFoundException 要么 LoginFailedException。
我的HandleExceptionAttribute 看起来像这样:
public class HandleExceptionAttribute : ExceptionFilterAttribute
{
public Type Type { get; set; }
public HttpStatusCode Status { get; set; }
public override void OnException(HttpActionExecutedContext context)
{
var ex = context.Exception;
ResponseHelper.CreateException(Status, ex.Message);
}
}
我想要的是能够处理将要抛出的异常类型并在属性中正确处理它,我在其中指定 HttpStatusCode。
这个代码的问题是总是调用最顶层的属性。因此,即使异常是 LoginFailedException,我总是会收到 UserNotFoundException 和 404 代码返回给客户端。
我怎样才能做到这一点?
【问题讨论】:
标签: c# exception-handling custom-attributes