C# SetError(myTextWriter)不执行任何操作
我试图找到一种方法来处理未处理的异常。我找到了下一个C# SetError(myTextWriter)不执行任何操作,c#,blazor,blazor-client-side,C#,Blazor,Blazor Client Side,我试图找到一种方法来处理未处理的异常。我找到了下一个 services.AddSingleton(); ... 公共类例外通知服务:TextWriter { 私人短信写手; 公共覆盖编码=>Encoding.UTF8; 公共事件事件处理程序OneException; 公共例外通知服务() { _装饰=控制台。错误; Console.SetError(这个); } 公共重写无效写线(字符串值) { OneException?.Invoke(此,值); _装饰。写线(值); } } 我检查这个代码
services.AddSingleton();
...
公共类例外通知服务:TextWriter
{
私人短信写手;
公共覆盖编码=>Encoding.UTF8;
公共事件事件处理程序OneException;
公共例外通知服务()
{
_装饰=控制台。错误;
Console.SetError(这个);
}
公共重写无效写线(字符串值)
{
OneException?.Invoke(此,值);
_装饰。写线(值);
}
}
我检查这个代码,它不会改变任何东西。异常正在写入浏览器控制台,方法WriteLine(字符串值)
根本不执行。我确信Console.SetError(this)
已经执行。为什么它什么都不做
因为我不知道如何认识一个原因,我开始尝试下一个不可思议的事情
Console.SetError(this)
更改为Console.SetOut(this)
\u装饰=控制台。错误
更改为\u装饰=控制台。输出
我在浏览器控制台中得到1000条信息,应用程序不再启动Console.SetError
在WebAssembly中被破坏,并且Console.SetOut
是可以的
我检查了这个代码,它没有改变任何东西
在您发布的版本中,错误是通过\u修饰的.WriteLine(值)转发的代码>因此“无变化”是预期结果。
然而,当你删除这一行,他们仍然显示,这是奇怪的。我刚刚用v3.2进行了测试
除了Console.SetError被破坏之外
不,不是。你可以像这样测试它
Console.Error.WriteLine($"Current count {currentCount}");
通过重写的WriteLine就可以了
但是错误现在被写入记录器,而不是(直接)写入控制台。这是另一个答案发布后的一个变化。您可能会在错误之前看到crit:
,这就是日志级别
现在我不知道如何重新配置日志记录,这可能是这里要问的另一个问题。首先,您确定源输出到错误流吗?是的,我确定。我特意在一些地方添加了抛出异常的代码。浏览器控制台向我展示了它们。“无更改”我的意思是“方法WriteLine(字符串值)根本不执行”,并且不存在其他更改。感谢您的回答!我已经知道如何重新配置日志记录
Console.Error.WriteLine($"Current count {currentCount}");