【问题标题】:Tracking down unhandled exceptions in Blazor Webassembly在 Blazor Webassembly 中跟踪未处理的异常
【发布时间】:2021-06-16 02:45:39
【问题描述】:

知道如何在 blazor webassembly 中获取非处理异常的行号吗?

很久以前就讨论过一些仍然需要团队完成才能使其正常工作的工作。如果我没记错的话,我认为它已经消失了。

考虑下面的消息。它让一个人完全处于黑暗之中,没有关于从哪里开始寻找的指导。

提前致谢。

【问题讨论】:

  • SubstringValue() 是你的代码吗?
  • 不,我没有那个。我知道在这种情况下空引用异常在哪里。我正在寻找一种在发生异常的输出中包含行号的方法。如果我没记错的话,这个管道必须由单声道的人来完成?

标签: c# blazor webassembly blazor-webassembly tooling


【解决方案1】:

不要粗鲁,但在 Blazor 文档中始终在与组件交互时自己处理异常:https://docs.microsoft.com/en-us/aspnet/core/blazor/fundamentals/handle-errors?view=aspnetcore-5.0&pivots=webassembly#global-exception-handling

只需用try/catch 块包装您的所有方法主体(甚至是生命周期方法)。注入ILogger<MyComponent> 以进行友好日志记录的奖励积分。 示例:

@inject ILogger<MyComponent> Logger

<h1>@UserName</h1>

@code {
    private string UserName { get; set; } = string.Empty;
    protected override async Task OnInitializedAsync()
    {
        try
        {
            NavigationManager.LocationChanged += OnLocationChanged;
            var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync();
            UserName = $"Hi, {authState.User.Claims.FirstOrDefault(x => x.Type == "display_name")?.Value}!";
        }
        catch (Exception ex)
        {
            Logger.LogError($"Failed to initialize MyComponent. Error: {ex}");
        }
    }
}

【讨论】:

  • 没有冒犯。其实我欢迎批评。我问的原因是因为微软团队实际上谈到了解决这个问题,因为他们提出的所有其他编程模型都支持这个,除了 blazor。
  • 就像添加的注释一样。我确实在我写的几乎所有内容中都使用了 try catch,但您仍然无法从 Exception 对象中提取行号。
猜你喜欢
  • 2017-05-08
  • 1970-01-01
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 2013-09-25
  • 2012-09-21
  • 2015-06-23
  • 1970-01-01
相关资源
最近更新 更多