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

C# 在C中用Sentry记录未处理的异常#,c#,exception,.net-core,sentry,revit-api,C#,Exception,.net Core,Sentry,Revit Api,我正在编写一个.NET应用程序,它是Autodesk Revit程序的“外接程序”。我想使用Sentry来记录和查看未处理的异常,下面的代码应该捕获一个异常并将其发送到我的sentry.io帐户上的仪表板 using (SentrySdk.Init("<my sentry dsn string>")) { throw new DuplicateWaitObjectException(); } 使用(SentrySdk.Init(“”) { 抛出新的DuplicateWait

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

using (SentrySdk.Init("<my sentry dsn string>"))
{
    throw new DuplicateWaitObjectException();
}
使用(SentrySdk.Init(“”)
{
抛出新的DuplicateWaitObjectException();
}
但是,我的仪表板上没有出现DuplicateWaitObjectException。我不明白为什么上面的代码不起作用,特别是因为捕获错误可以很好地工作:

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

try
{
    throw new DuplicateWaitObjectException();
}
catch (Exception err)
{
    SentrySdk.CaptureException(err);
}
SentrySdk.Init(“”);
尝试
{
抛出新的DuplicateWaitObjectException();
}
捕获(异常错误)
{
SentrySdk.CaptureException(错误);
}
我怀疑这可能与我的应用程序是一个由Revit程序加载的外接程序,而不是一个独立的应用程序有关,但我真的不确定。我认为我的代码(第一个块)应该工作对吗

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

我在Visual Studio 2019 for Windows(10)中工作,并为Revit 2019进行开发。我的SentrySDK版本是v2.1.1


感谢阅读

Revit捕获所有未处理的异常,以便库无法看到它们

将代码包装在try-catch块中是迄今为止最简单的解决方案。

唯一的其他选择是在单独的AppDomain或进程中运行代码,并使用诸如远程处理或gRPC之类的工具与Revit API通信。

Revit捕获任何未处理的异常,以便库无法看到它们

将代码包装在try-catch块中是迄今为止最简单的解决方案。

唯一的其他选择是在单独的AppDomain或进程中运行代码,并使用诸如远程处理或gRPC之类的工具与Revit API通信。

我认为上面提供的代码是最佳解决方案。同样的想法也出现在

[事务(TransactionMode.ReadOnly)]
公共类MyCommand:IExternalCommand
{
公共结果执行(ExternalCommandData commandData、引用字符串消息、元素
(电子元件){
SentrySdk.Init(“”);
尝试
{
//做事
}捕获(异常扩展){
SentrySdk.CaptureException(exp);
}
} 

我认为上面提供的代码是最好的解决方案

[事务(TransactionMode.ReadOnly)]
公共类MyCommand:IExternalCommand
{
公共结果执行(ExternalCommandData commandData、引用字符串消息、元素
(电子元件){
SentrySdk.Init(“”);
尝试
{
//做事
}捕获(异常扩展){
SentrySdk.CaptureException(exp);
}
} 
[Transaction(TransactionMode.ReadOnly)]
    public class MyCommand: IExternalCommand 
    {
        public Result Execute(ExternalCommandData commandData, ref string message, ElementS

    et elements) {

    SentrySdk.Init("<my sentry dsn string>");
            try 
            {
                //do stuff
            } catch (Exception exp) {
               SentrySdk.CaptureException(exp);
            }
        }