在Blazor应用程序中,如果使用依赖注入(DI)并且没有正确注入依赖项,则在编码错误的情况下,该应用程序会在控制台中显示错误。然而,在使用Blazor WASM的ErrorBoundary时,它似乎无法捕捉此类错误并使整个应用程序崩溃。
为了解决这个问题,可以在组件的构造函数中添加一个try-catch块,以捕获缺少依赖项的错误并将其传递给ErrorBoundary进行处理。以下是一个示例:
public SomeComponent(IInjectedService injectedService)
{
try
{
this.injectedService = injectedService;
}
catch(Exception ex)
{
this.hasError = true;
this.errorMessage = ex.Message;
}
}
此时,需要添加一个在组件中呈现错误消息的标记,例如:
@if(hasError)
{
@errorMessage
}
这样当缺失依赖项时,ErrorBoundary就可以捕获并呈现错误消息了。