Blazor客户端应用程序级别异常处理

Alv*_*par 5 exception blazor

如何全局处理客户端Blazor应用程序的应用程序级异常?

Ger*_*rit 4

您可以创建一个处理 WriteLine 事件的单例服务。这只会在错误时被触发,这要归功于Console.SetError(this);

public class ExceptionNotificationService : TextWriter
{
    private TextWriter _decorated;
    public override Encoding Encoding => Encoding.UTF8;

    public event EventHandler<string> OnException;

    public ExceptionNotificationService()
    {
        _decorated = Console.Error;
        Console.SetError(this);
    }

    public override void WriteLine(string value)
    {
        OnException?.Invoke(this, value);

        _decorated.WriteLine(value);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后将其添加到ConfigureServices函数中的Startup.cs文件中:

services.AddSingleton<ExceptionNotificationService>();
Run Code Online (Sandbox Code Playgroud)

要使用它,您只需在主视图中订阅 OnException 事件。

来源