C# Revit中的AppDomain.CurrentDomain.UnhandledException插件

C# Revit中的AppDomain.CurrentDomain.UnhandledException插件,c#,appdomain,unhandled-exception,revit-api,revit,C#,Appdomain,Unhandled Exception,Revit Api,Revit,我想在我自己的Revit addin中使用崩溃报告器,但从未调用AppDomain.CurrentDomain.UnhandledException。Revit似乎自己管理未处理的预期,并显示自己的崩溃对话框。在revit加载项中捕获所有未处理的异常之前,我应该做些什么 我已经尝试了以下代码行,但不起作用:它从未进入处理程序方法: public Result Execute(ExternalCommandData commandData, ref string message, ElementS

我想在我自己的
Revit addin
中使用崩溃报告器,但从未调用
AppDomain.CurrentDomain.UnhandledException
。Revit似乎自己管理未处理的预期,并显示自己的崩溃对话框。在revit加载项中捕获所有未处理的异常之前,我应该做些什么

我已经尝试了以下代码行,但不起作用:它从未进入处理程序方法:

public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
    {
        AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
    }

    private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
    {
        throw new NotImplementedException();
    }

感谢您的帮助

您不想在try-catch块中处理此逻辑而不是订阅事件的任何特定原因


在这种情况下,顺便说一句,我相信您订阅的是应用程序窗口的事件处理程序-Revit永远不会让它走得那么远,这就是为什么它不会进入您创建的处理程序方法的原因。

您不想在try-catch块中处理此逻辑而不是订阅事件的原因吗


在这种情况下,顺便说一句,我相信您订阅的是应用程序窗口的事件处理程序-Revit永远不会让它在链上走那么远,这就是为什么它不会进入您创建的处理程序方法的原因。

您是否试图创建一个通用的崩溃报告程序,以捕获与外接程序无关的异常?我认为这在Revit附加模块中是不可能的。如果您正试图这样做,我将研究分析活动日志文件中的特定“错误”关键字。这将提供有关Revit内部故障的更多信息

如果您试图为自己的外接程序创建崩溃报告程序,那么我将确保在Revit调用的方法中使用Try/Catch块来记录/报告抛出的任何异常

[事务(TransactionMode.ReadOnly)]
公共类MyCommand:IExternalCommand
{
公共结果执行(ExternalCommandData commandData、ref字符串消息、ElementSet元素){
尝试
{
//做事
}捕获(异常扩展){
CrashReporter.LogException(exp);
投掷;
}
}

然后将相同的应用于外接程序中的任何其他入口点,例如
IExternalApplication.StartUp()
IExternalApplication.ShutDown()
etc..

是否正在尝试创建一个通用的崩溃报告程序,以捕获与外接程序无关的异常?我认为这在Revit外接程序中是不可能的。如果您正试图这样做,我将研究分析活动日志文件中的特定“错误”关键字。这将提供有关Revit内部故障的更多信息

如果您试图为自己的外接程序创建崩溃报告程序,那么我将确保在Revit调用的方法中使用Try/Catch块来记录/报告抛出的任何异常

[事务(TransactionMode.ReadOnly)]
公共类MyCommand:IExternalCommand
{
公共结果执行(ExternalCommandData commandData、ref字符串消息、ElementSet元素){
尝试
{
//做事
}捕获(异常扩展){
CrashReporter.LogException(exp);
投掷;
}
}

然后将相同的方法应用于外接程序中的任何其他入口点,例如
IExternalApplication.StartUp()
IExternalApplication.ShutDown()
等等。您好,因为这是我的崩溃报告器api的工作方式。您好,因为这是我的崩溃报告器api的工作方式。