Компилятор (VC++8.0) выдает предупреждение C4702: unreacheable code в такого вида функциях:
BOOL CADORecordset::SetSort(LPCTSTR strCriteria)
{
_ASSERT(IsOpen());
try
{
m_pRecordset->PutSort(strCriteria);
return TRUE;
}
catch(_com_error &e)
{
dump_com_error(e); // С4702
return FALSE;
}
}
(Функция — известная обертка над Recordset из ADO)
Почему он считает что секция catch недостижима? Ведь метод m_pRecordset->PutSort не объявлен ни как __declspec(nothrow), ни как throw()
и, конечно, не является extern "C" функцией.
Переменная m_pRecordset является экземпляром класса, сгенерированным директивой #import.
Такие предупреждения появляются только в RELEASE-конфигурации, в DEBUG их нет, хотя в обоих случаях стоит /W4 и /EHsc.