如何捕获根方法中的所有内部异常

本文关键字:内部 异常 何捕获 方法 | 更新日期: 2023-09-27 18:33:09

我正在使用Windows服务,我想在我的根方法中捕获所有内部异常。在我的内部方法之一中,我正在使用如下所示的 try/catch 块。发生错误时,服务不会将错误消息返回到我的根方法。相反,它只是抛出一个错误并停止在我的内部方法中。

如何将错误消息返回到我的根方法?

try
{
    loadAdapterProperties(ref strAssemblyName, ref strTypeName, ref statusXML,
       strAssignedTask, ref lastAdapter, ref entityTypeCode, ref adminID);
    if (strAssemblyName == "" || strTypeName == "")
    {
        LogWriter.WriteTimedMessage("No adapters currently available, {0}",
            strAssignedTask);                         
        loopCondition = false;
        break;
    }
    objHandle = Activator.CreateInstance(strAssemblyName, strTypeName);
    objAdapter = (BaseGatesAdapter)objHandle.Unwrap();
    objAdapter.Load(strAssignedTask, statusXML, entityTypeCode, adminID);
    objAdapter.Execute();
    LogWriter.WriteTimedMessage("Executed {0}", strAssemblyName);
    if (lastAdapter == true)
        loopCondition = false;
}
catch (System.Exception e)
{
    loopCondition = false;                     
    LogWriter.WriteTimedMessage("FAILED to execute {0}",strAssemblyName);
    throw;
}

如何捕获根方法中的所有内部异常

您可能的意思是,运行应用程序时收到的错误消息指向内部方法。这意味着(很可能)您没有在根级别进行尝试/捕获。

这可能很棘手 - 如果您在计算机上安装了调试器,调试器将在您的主应用程序之前收到此"抛出"的通知。根据调试器配置,它可能会暂停应用。请参阅此处了解如何完全关闭它:抑制首次机会异常

以下是有关如何在线程级别注册异常事件的说明,因此您不必在所有方法上包装 try/catch如何在 .NET 应用中捕获所有异常/崩溃