我有一个包含前端Web门户的应用程序,该应用程序调用后端的API应用程序。该API调用一些业务服务层(类库),该业务服务层又连接到数据库。
我遇到的问题是将错误从底层数据库一直升级到Web门户:db =>类库=> api => web。我想在Web门户上接收特定的err消息,无论它发生在什么地方。
当前,如果错误发生在门户网站本身,那么没问题,门户网站将显示该错误。但是,如果是类库层,那么我会从api层收到通用api错误。
我试图像这样在API层中使用全局错误处理中间件:
-spec hello(list(string()), integer()) -> list(string()).
1> hello:limit_word(["Hello", "there my friend", "wassup!"],10).
["Hello"]
2> hello:limit_word(["Hello", "there my friend", "wassup!"],22).
["Hello", "there my friend"]
我这样注册它:
public async Task Invoke(HttpContext context)
{
context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
var ex = context.Features.Get<IExceptionHandlerFeature>()?.Error;
if (ex == null) return;
var error = new
{
message = ex.Message
};
context.Response.ContentType = "application/json";
using (var writer = new StreamWriter(context.Response.Body))
{
new JsonSerializer().Serialize(writer, error);
await writer.FlushAsync().ConfigureAwait(false);
}
}
但是,这不能捕获特定的类库错误。
任何有关如何处理此问题的建议都将受到赞赏。