Blazor服务器端,错误处理无需强制重新加载



我创建了一个服务器端blazor应用程序,每当出现错误时,我都会被迫重新加载页面。有没有什么好的方法可以将用户重定向到自定义的错误页面,而不是页面底部出现的黄色条?

在重新加载之前,您无法导航到其他页面,这对用户来说非常烦人。。。

我对您最好的回答是保护您的异常。当您遇到可能发生异常的地方时,制作一些try/catch块,并在前端处理它们,而不是让应用程序抛出异常。如果这样做,应用程序不会被迫停止,因此用户也不会被迫重新加载页面。

try {
// Some code to send data to a database via a service or controller
} catch (ArgumentException e) when (e.ParamName == "Stiffler's Mom")
{
// Some code to redirect the user/show validation errors, if something is wrong
}

使用ErrorBoundary,您可以为用户将在客户端上看到的错误信息创建自己的组件
剃刀页面的简单示例(*.rarzor(:

<ErrorBoundary @ref=errorBoundary>
<ChildContent>
@*---Here is your component or page---*@
</ChildContent>
<ErrorContent>
@*---Here is your own component for displaying error---*@
<ErrorContent>
</ErrorBoundary>

@code{
private ExErrorBoundary? errorBoundary;
protected override void OnParametersSet()
{
errorBoundary?.Recover();
}
}

Recover((是在后续导航过程中重置ErrorBoundary所必需的。

此处详细描述:https://learn.microsoft.com/en-us/aspnet/core/blazor/fundamentals/handle-errors?view=aspnetcore-7.0#错误边界

如果您想获得有关导致ErrorBoundary异常的信息,那么您需要从ErrorBoundary继承该类,并获得CurrentException属性,如下所示:

public class ExErrorBoundary : ErrorBoundary
{
public new Exception? CurrentException => base.CurrentException;
}

相关内容

  • 没有找到相关文章

最新更新