当我在控制器中捕获异常时,客户端仍会收到InternalServerError,该如何解决?
我有自己的“结果”类,可以将其设置为失败,并填充一条用户友好的错误消息,我想捕获特定控制器方法中的异常,然后发回失败的“结果”类,而不是代码500 InternalServerError 。
谢谢您的帮助!
[HttpGet]
[Route(Server_DevTestApiEndpoints.INTERNAL_SERVER_EXCEPTION_RESULT_TEST)]
public Result GetInternalServerExceptionTest()
{
try
{
throw new Exception();
return new Result();
}
catch (Exception e)
{
return new Result(e);
}
}
从体系结构的角度来看,最好使用ExceptionFilterAttribute
来捕获控制器操作中的所有错误:
public class LogExceptionFilterAttribute : ExceptionFilterAttribute
{
public override async Task OnExceptionAsync(ExceptionContext context)
{
//log your exception;
context.Result = new ObjectResult("your custom message")
{
StatusCode = StatusCodes.Status200OK
};
}
}
并装饰您的动作或整个控制器:
[HttpGet]
[LogExceptionFilter]
[Route(Server_DevTestApiEndpoints.INTERNAL_SERVER_EXCEPTION_RESULT_TEST)]
public Result GetInternalServerExceptionTest()
{
//your action logic
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句