Blazor UI:错误处理
Blazor 默认会在发生未处理异常时在页面底部显示黄色错误提示条,但这在实际应用中并不实用。
ABP 为 Blazor UI 提供了一套自动错误处理系统:
- 自动处理所有未捕获异常,并向用户展示清晰实用的提示信息
- 能够区分不同类型的异常。对用户隐藏内部/技术性错误详情(此类情况会显示通用错误信息)
- 与 服务端异常处理系统 深度集成
基础用法
ABP 框架会对不同类型的异常进行差异化处理。
UserFriendlyException
UserFriendlyException 是一种特殊异常类型。通过抛出此类异常,可以直接向用户显示错误提示对话框。
对于 Blazor Server,必须手动处理异常,否则会导致整个应用崩溃。目前 Blazor Server 暂不支持自动异常处理,请关注 此议题 了解进展。在此期间,您可以使用 try-catch 代码块并调用 ABP 的
HandleErrorAsync方法手动处理错误,该方法会为您显示错误对话框。
示例
@page "/"
@using Volo.Abp
<Button Clicked="TestException">抛出测试异常</Button>
@code
{
private async Task TestException()
{
try
{
throw new UserFriendlyException("这是一条用户友好型错误信息!");
}
catch(UserFriendlyException ex)
{
await HandleErrorAsync(ex);
}
}
}
ABP 会自动处理异常并向用户显示错误信息:
如需创建自定义异常类,可从
UserFriendlyException派生,或直接实现IUserFriendlyException接口。
可使用本地化系统展示本地化的错误信息。
BusinessException 及其他异常类型
请参阅异常处理文档了解不同类型的异常类和接口,以及异常处理系统的其他功能。
通用错误处理
如果抛出的异常不属于特殊类型,则被视为通用错误,系统会向用户显示通用错误信息:
所有错误详情(包括堆栈跟踪)仍会记录在浏览器控制台中。
服务端错误
服务端返回的错误(如验证错误、授权错误和用户友好型错误)会按预期进行处理,并正确展示给用户。因此错误处理系统可实现端到端的无缝衔接,无需手动处理异常或手动传递服务端到客户端的错误信息。
抠丁客




