C# 从异常获取异常类型

C# 从异常获取异常类型,c#,C#,我有一个应用程序可以通过RFC调用连接SAP,在尝试与SAP建立RFC调用时,我需要在连接失败时向用户显示通知。我得到了以下例外 { SAP.Middleware.Connector.RfcCommunicationException: LOCATION CPIC (TCP/IP) on local host with Unicode ERROR partner '151.9.39.8:8010' not reached TIME

我有一个应用程序可以通过RFC调用连接SAP,在尝试与SAP建立RFC调用时,我需要在连接失败时向用户显示通知。我得到了以下例外

{
    SAP.Middleware.Connector.RfcCommunicationException: 
    LOCATION    CPIC (TCP/IP) on local host with Unicode
    ERROR       partner '151.9.39.8:8010' not reached
    TIME        Wed Jul 16 10:32:05 2014
    RELEASE     720
    COMPONENT   NI (network interface)
    VERSION     40
    RC          -10
    MODULE      nixxi.cpp
    LINE        3286
    DETAIL      NiPConnect2: 151.9.39.8:8010
    SYSTEM CALL connect
    ERRNO       10060
    ERRNO TEXT  WSAETIMEDOUT: Connection timed out
    COUNTER     2
} 
通过使用此异常,我需要通知用户。但是,我如何识别它是否是SAP.Middleware.Connector.RfcCommunicationException,因为我也在处理其他异常。是否有任何方法可以在不连接上述异常字符串的情况下获取异常类型

在我的试接球区 我目前正在这样做,但它不工作

catch (Exception ex)
{  
    if (ex.ToString().ToLower() == "rfccommunicationexception")
    {
        MessageError = "RFC error";
    }
}

您可以使用
is

例如:-

catch (Exception exception )
{  
    if (exception is SAP.Middleware.Connector.RfcCommunicationException)
    { 
       ////Your code
    }
}
或者,正如Resharper所建议的,捕获特定异常更好,如下所示:-

catch(SAP.Middleware.Connector.RfcCommunicationException)
{
    // Your code    
}

显式捕获异常:

catch(SAP.Middleware.Connector.RfcCommunicationException)
{
    // RFC exception
}
catch(Exception e)
{
    // All other exceptions
} 

你可以试试这个:

// Catch the exception
catch(exception e)
{
    // Check if the type of the exception is an RFC exception.
    if(e is SAP.Middleware.Connector.RfcCommunicationException)
    {

    }
    else // It is not an RFC exception.
    {

    }
}
或者您可以尝试分别捕获每个异常,如下所示:

catch(SAP.Middleware.Connector.RfcCommunicationException exception)
{

}
catch(exception e)
{

}

最好的方法是使用多个捕捉块:

try
{
   // your code
}
catch(RfcCommunicationException rfcEx)
{
  // handle rfc communication exception
}
cathc(Exception ex)
{
  // handle other exception
}

RfcCommunicationException
是否在某个程序集中不可用?为什么不直接捕获(RfcCommunicationException ex)?很抱歉。。我当时处境艰难,不必说抱歉@tarzanbapa:)Visual Studio告诉我:“SAP.Middleware.Connector.RfcCommunicationException”类型未定义。有什么想法吗?你加了推荐信了吗