我正在从.Net Core API中的方法抛出新的Exception(“ messages”),并且在startup.cs中包含以下代码
''''app.UseExceptionHandler(a => a.Run(async context =>
{
var exceptionHandlerPathFeature = context.Features.Get<IExceptionHandlerPathFeature>();
var exception = exceptionHandlerPathFeature.Error;
var result = JsonConvert.SerializeObject(new { error = exception.Message,
StatusCode = (int?)HttpStatusCode.BadRequest });
context.Response.ContentType = "application/json";
await context.Response.WriteAsync(result);
}));''''
当我签入邮递员时,得到的回复如下:
{
"error": "Error in Refresh() Method -IDX10000: The parameter 'token' cannot be a 'null' or an empty object.\r\nParameter name: token",
"StatusCode": 400 }
现在,我正在尝试使用拦截器在Angular中处理此问题,但在开发人员工具中扩展时出现“ err”,没有高于json错误响应的地方,即使当我声明(err:HttpErrorResponse)时,它甚至都没有进入
''''export class ErrorInterceptor implements HttpInterceptor {
constructor(private authenticationService: AuthenticationService) { }
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(req)
.pipe(catchError((err: HttpErrorResponse) => {
console.log ('error is:', err.error);
return Observable.throw(err.error);
}));
} ''''
这是开发人员工具显示'err'值的方式:
HttpErrorResponse
error: ProgressEvent {isTrusted: true, lengthComputable: false, loaded: 0, total: 0, type: "error", …}
headers: HttpHeaders {normalizedNames: Map(0), lazyUpdate: null, headers: Map(0)}
message: "Http failure response for (unknown url): 0 Unknown Error"
name: "HttpErrorResponse"
ok: false
status: 0
statusText: "Unknown Error"
url: null
__proto__: HttpResponseBase
我在做什么错?我不是在处理异常还是从API正确传递了异常?