【发布时间】:2019-06-21 02:02:05
【问题描述】:
请为以下问题提供任何合适的解决方案,
当 blazor 应用程序抛出任何异常时,整个应用程序都会停止运行,并且没有链接正在工作,直到我可以再次通过 studio 运行该应用程序。
如何处理这个问题?
感谢和问候
已编辑
(为了提供所要求的信息)
重现步骤:
创建一个 blazorserverside 应用程序:
修改 IncrementCount
Counter.razor:
void IncrementCount()
{
currentCount += 1;
_ = 0 / (5-currentCount); // <-- force error when currentCount is 5.
}
按
Click Me按钮5次会报错。尝试导航到其他应用页面(主页、获取数据)没有任何反应,因为它在客户端上静默失败。
其他信息
在Startup.cs 配置错误:
app.UseExceptionHandler("/errors");
堆栈跟踪错误:
Unhandled exception rendering component: Attempted to divide by zero.
System.DivideByZeroException: Attempted to divide by zero.
at blaex.Pages.Counter.IncrementCount() in /home/dani/tmp/blaex/Pages/Counter.razor:line 27
at Microsoft.AspNetCore.Components.EventCallbackWorkItem.InvokeAsync[T](MulticastDelegate delegate, T arg)
at Microsoft.AspNetCore.Components.ComponentBase.Microsoft.AspNetCore.Components.IHandleEvent.HandleEventAsync(EventCallbackWorkItem callback, Object arg)
at Microsoft.AspNetCore.Components.Rendering.Renderer.DispatchEventAsync(Int32 eventHandlerId, UIEventArgs eventArgs)
【问题讨论】:
-
处理您的异常。总是一个好主意。我不确定,但当前的 Blazor 行为可能是设计使然。
-
请提供代码或一些堆栈跟踪/日志。异常发生在应用程序的哪个部分?
-
我认为这是一个很好的问题。我附加了其他信息以使其如此友好。
-
.net Core 6 将有一个可能有用的 ErrorBoundary 组件:devblogs.microsoft.com/aspnet/…