Как объяснил @PresleyDias, исключение отображает отладчик, а не ваше приложение. Обнаружено исключение (хотя вы должны отлавливать его по ссылке const
), но отладчик видит это раньше, чем ваше приложение, вот и все. Вы можете настроить отладчик на игнорирование EConvertError
, если хотите.
Лучшее решение - избежать исключения. Если вместо этого вы используете AnsiString::ToIntDef()
, вы можете полностью удалить блок try/catch
:
Oversteering = HoursCounter.ToIntDef(0);
В качестве альтернативы вы можете использовать TryStrToInt()
вместо:
if (!TryStrToInt(HoursCounter, Oversteering))
{
...;
}
Если 0
является допустимым значением для вашего счетчика, используйте TryStrToInt()
:
if (TryStrToInt(HoursCounter, Oversteering))
{
// use Oversteering as needed, even zeros...
}
else
ShowMessage("Cannot convert HoursCounter to a valid integer!");
Если 0
всегда представляет ошибку, используйте ToIntDef()
:
Oversteering = HoursCounter.ToIntDef(0);
if (Oversteering != 0)
{
// use Oversteering as needed, except zeros...
}
else
ShowMessage("Cannot convert HoursCounter to an acceptable integer!");