jav*_*per 7 c# rest .net-core angular
我有一些用 C# 编写的 REST API,这些 API 是从 Angular 调用的(我使用的是 Angular 8 版本)。通话正常,工作正常。但是,如果出现任何异常,我无法以角度显示自定义的错误消息。例如,假设我在 C# 中有一个服务器端验证,它验证字段的值是否与字符串“abc”匹配。如果不匹配,它会抛出一个错误,并且在 UI(用 Angular 开发)中,我想显示消息
“指定的字符串无效”。
我的服务器端代码如下 -
if (headerValues.Equals("abc")) {
throw new InvalidStringException("Invalid String specified", 999);
}
Run Code Online (Sandbox Code Playgroud)
无效InvalidStringException类如下 -
public class InvalidStringException : System.Exception
{
int status { get; set; }
public InvalidStringException() { }
public InvalidStringException(string message, int status) : base(message) {
this.status = status;
}
}
Run Code Online (Sandbox Code Playgroud)
当该异常在服务器端引发并捕获时,它可作为 500 异常使用,但无法打印自定义消息。
我正在尝试在 Angular 中执行以下代码 -
} catch (error) {
console.log("Error Status: ", error.status);
console.log("Error Status: ", error.message);
}
Run Code Online (Sandbox Code Playgroud)
请建议如何处理这种情况。
您的 Angular 应用程序收到的错误对象应该是以下对象的实例HttpErrorResponse
你可以这样做来处理 http 错误:
if (error instanceof HttpErrorResponse) {
if (!error.status) {
console.log(error.message || error.toString());
} else {
console.log(`error status : ${error.status} ${error.statusText}`);
switch (error.status) {
case 401:
this.router.navigateByUrl("/login");
break;
case 500:
this.router.navigateByUrl("/login");
console.log(`redirect to login`);
break;
}
}
} else {
console.error("Other Errors");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5673 次 |
| 最近记录: |