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