Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SetError(myTextWriter)不执行任何操作_C#_Blazor_Blazor Client Side - Fatal编程技术网

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)
  • 它确实会改变。我在浏览器控制台中遇到1000个错误,应用程序未启动

  • \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}");