Разработка приложений для Internet

Обработка исключения CInternetException


В приложениях, которые представлены в этой книге, используется ряд методов, которые могут вызвать исключение CInternetException. Мы организуем обработку этих исключений с помощью блоков try и catch. В блок try заключаются методы, способные вызвать исключение CInternetException, а ниже помещается блок catch для обработки этого исключения:

try

{

   // Вызов метода, который может стать причиной исключения

   . . .

}

catch (CInternetException* pEx)

{

   // Обрабатываем исключение CInternetException

   TCHAR szErr[1024];

   if (pEx->GetErrorMessage(szErr, 1024))

      AfxMessageBox(szErr);

   else

      AfxMessageBox("GetFtpConnection Error");

   // Удаляем исключение

   pEx->Delete();

}

Во всех наших примерах обработчики исключения CInternetException выполняют примерно одни и те же действия. Сначала определяется причина, вызвавшая исключение. Для этой цели вызывается метод GetErrorMessage. Этот метод записывает текстовое сообщение об ошибке в буфер, указанный первым параметром. Размер буфера должен быть указан во втором параметре метода. Если текстовое описание ошибки недоступно, тогда метод GetErrorMessage возвращает нулевое значение и мы отображаем на экране свое собственное сообщение об ошибке.

В завершение блока catch мы удаляем уже обработанное исключение, для чего вызываем метод Delete. Описание этого метода вы не обнаружите в справочной системе, что однако не мешает использовать его в своих приложениях. Если вы не удалите исключение, то по завершении приложения отладчик сообщит вам о наличии неосвобожденных областей памяти.

¨     Обратите внимание, что надо использовать именно метод Delete, а не оператор delete, название которого начинается с маленькой буквы.



Содержание раздела