【发布时间】:2020-10-05 21:04:51
【问题描述】:
我的业务层
public IResult Register(UserRegisterDto userRegisterDto, string role)
{
try
{
ValidationTool.Validate(new RegisterDtoValidator(), userRegisterDto);
....
}
catch (Exception e)
{
throw;
}
}
我的异常中间件
private Task HandleExceptionAsync(HttpContext httpContext, Exception e)
{
httpContext.Response.ContentType = "application/json";
httpContext.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
string message = "Internal Server Error";
int statusCodes = httpContext.Response.StatusCode;
if (e.GetType() == typeof(ValidationException))
{
message = e.Message;
statusCodes = (int)HttpStatusCode.BadRequest;
}
return httpContext.Response.WriteAsync(new ErrorDetails
{
StatusCode = statusCodes,
Message = message
}.ToString());
}
还有我的 Api 控制器
public IActionResult RegisterActor(UserRegisterDto userRegisterDto)
{
var result = _authService.Register(userRegisterDto, Role.default_actor.ToString());
if (!result.Success)
{
return BadRequest(result.Message);
}
return Ok(result);
}
我的问题当我从业务层遇到一些错误时,我的程序崩溃了。当出现一些错误时,中间件就会出现错误。我想编程不崩溃直接来我的中间件
我可能会遇到数据库名称和程序崩溃但我想要
{
"Message": "Internal Server Error",
"StatusCode": 500
}
因为我的中间件正在运行。
**我猜这都是关于投掷的
catch (Exception e)
{
throw;
}
【问题讨论】:
-
ClassLibrary(业务或服务),我使用“尝试缓存{ throw;}”。但我没有崩溃程序,错误来自我的 WebApi,然后转到 CustomMiddleware。这可能吗?
标签: c# .net-core asp.net-core-webapi