exception - Blazor 客户端应用程序级异常处理
问题描述
如何全局处理客户端 Blazor 应用程序的应用程序级异常?
解决方案
您可以创建一个处理 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);
}
}
然后将其添加到 ConfigureServices 函数中的 Startup.cs 文件中:
services.AddSingleton<ExceptionNotificationService>();
要使用它,您只需在主视图中订阅 OnException 事件。
推荐阅读
- visual-studio - 如何指定 VSPackage / VSIX Manifest prereq 或安装目标版本范围?
- c++ - 除了声明的参数和“this”指针之外,c++ (g++) 构造函数还有哪些其他参数,以什么顺序?
- unity3d - Unity自定义着色器第二遍未执行
- git - Git:总结子回购
- php - fopen 不允许创建文件名的变量
- c# - 为什么 ASP.NET 过滤器属性内部有逻辑?
- java - Java 服务器使用线程错误 RequestProcessor not found
- azure - 在以 Cosmos 为源的 Azure 数据工厂中获取时间戳的最后一个值
- javascript - 带有箭头和按钮的自动幻灯片
- python - 函数内部的 Python readline() 跳过文件中的第二行