Да, обработка исключений требует значительных ресурсов, но иногда это не так уж и плохо.
Если вы придерживаетесь только одной попытки, вы можете проверить сообщение об ошибке.
Примечание: Iтакже добавили вторую попытку триггера для общих (не IO) ошибок
try
{
SendData("!GetLocation!");
string data = GetData();
}
catch (System.IO.IOException ex)
{
if (ex.Message.IndexOf("Unable to read") != -1)
{
// GetData error
}
else if (ex.Message.IndexOf("Unable to write") != -1)
{
// SendData error
}
else
{
//Other IO errors
}
}
catch(Exception exc)
{
// Unspected errors
}
, вы также можете установить логическую переменную и проверить ее значение, чтобы узнать, где он сломал ваш код.
bool sendCalled = false;
try
{
SendData("!GetLocation!");
sendCalled = true;
string data = GetData();
}
catch (System.IO.IOException ex)
{
if (sendCalled)
{
// GetData error
}
else
{
// SendData error
}
}