Я использую ADO для доступа к базе данных SQL Server.
Определяю удар набора записей:
_RecordsetPtr m_pRecordset;
После открытия набора записей для таблицы я пытаюсь запустить цикл:
while (!m_pRecordset->ADOEOF)
{
…(do some tasks) …
m_pRecordset->MoveNext();
}
Однако в строке 44 при вызове m_pRecordset-> MoveNext () возникает исключение, указывающее, что значение в следующей строке (строка 45) недопустимо. Тогда исключение прервет весь цикл. Как я могу пропустить строку с недопустимым значением и продолжить строку после недопустимой строки?
Спасибо





Поскольку MoveNext вызовет исключение, вы можете начать с встраивания этого вызова в блок try / catch. Когда вы перехватываете исключение, вы хотите проигнорировать эту запись и перейти к следующей. С этим можно справиться несколькими способами.
Один из способов - установить флаг, указывающий, есть ли у вас допустимая строка, а затем проверить это, прежде чем выполнять все действия, связанные с «выполнением некоторых задач».
Другой способ - поместить блок try / catch в цикл, из которого вы выйдете, если успешно прочитаете строку, и останетесь внутри, если потерпели неудачу. Этот способ может быть сложным, поскольку вам также необходимо проверить EOF перед зацикливанием.