Получить тип исключения из исключения
У меня есть приложение для соединения SAP с вызовом RFC, и мне нужно показать пользователю уведомление о сбое соединения при попытке установить вызов RFC с SAP. И я получаю следующее исключение.
{
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
или нет, потому что я тоже обрабатываю другие исключения. Есть ли способ получить тип исключения без конкатенации приведенной выше строки исключения.
В моем блоке try catch я сейчас делаю это, но он не работает.
catch (Exception ex)
{
if (ex.ToString().ToLower() == "rfccommunicationexception")
{
MessageError = "RFC error";
}
}
4 ответа
Ты можешь использовать 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:
try
{
// your code
}
catch(RfcCommunicationException rfcEx)
{
// handle rfc communication exception
}
cathc(Exception ex)
{
// handle other exception
}
Вы можете попробовать это:
// 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
каждое исключение отдельно, как показано ниже:
catch(SAP.Middleware.Connector.RfcCommunicationException exception)
{
}
catch(exception e)
{
}