c# - 在 C# 中使用 Sentry 记录未处理的异常

标签 c# exception .net-core sentry revit-api

我正在编写一个 .NET 应用程序,它是 Autodesk Revit 程序的“插件”。我想使用 Sentry 来记录和查看一般未处理的异常。 From my understanding ,以下代码应该捕获异常并将其发送到我的sentry.io 帐户上的仪表板。

using (SentrySdk.Init("<my sentry dsn string>"))
{
    throw new DuplicateWaitObjectException();
}

但是,我的仪表板上没有显示 DuplicateWaitObjectException。我不知道为什么上面的代码不起作用,特别是因为捕获错误显式地工作得很好:

SentrySdk.Init("<my sentry dsn string>");

try
{
    throw new DuplicateWaitObjectException();
}
catch (Exception err)
{
    SentrySdk.CaptureException(err);
}

我怀疑这可能与我的应用程序是由 Revit 程序加载的加载项有关,而不是作为独立的应用程序,但我真的不确定。我是否正确地相信我的代码(第一个 block )应该工作?

我正在考虑缓解这个问题,而不是将我的代码包装在 Revit 入口点的 try-catch block 中,但这对我来说似乎相当老套,因为我不知道是什么导致了这个问题。

我正在使用 Visual Studio 2019 for Windows (10) 并为 Revit 2019 进行开发。我的 SentrySDK 版本是 v2.1.1。

感谢您的阅读

最佳答案

Revit 捕获任何未处理的异常,因此库将无法看到它们。

将代码包装在 try-catch block 中的想法是迄今为止最简单的解决方案。
唯一的其他选择是在单独的 AppDomain 或进程中运行代码,并使用远程处理或 gRPC 等功能与 Revit API 进行通信。

关于c# - 在 C# 中使用 Sentry 记录未处理的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61823333/

相关文章:

c# - .NET Core 中的用户配置设置

c# - 索引超出范围异常与参数超出范围异常

c# - 数据契约(Contract)异常。无法序列化

c# - 查看加载时间超过 3 分钟

c# - 使用自定义 XML 部分隐藏 Word 内容控件

asp.net-mvc - ASP.NET MVC 4 : Handle exception caused by JsonValueProvider

java - 如何恢复 Spring Boot 1.5 中的默认异常映射?

c# - 无法连接另一台服务器上的Mysql

c# - 将配置传递给 IHostedService

c# - 键列具有不同名称时的实体拆分?