Пример:
void DoMyOperation()
{
// Выполняется операция X
AfxMessageBox( "Возникла ошибка выполнения операции X"); AfxThrowUserException( ); // Выполнен бросок исключения
}
BOOL TrySomething() 1
{ '
TRY
{
DoMyOperation(); // Вызываемая функция может бросить исключение
}
САТСЩ CUserException, е ) // Блок обработки исключения CUserException
{
return FALSE; // Пользователь уже получил сообщение об ошибке
AND_CATCH( CException, e )
{
// Сообщение пользователю при возникновении других типов исключений AfxMessageBox( "Возникла ошибка выполнения операции"); return FALSE;
END_CATCH
return TRUE; // Исключения не произошло }
Класс COleException
Объект COleException создается при ошибках в выполнении OLE-операций. Класс COleException включает общедоступную переменную класса, содержащую код состояния, включающий причину возникновения ошибки.
Для непосредственного броска данного исключения можно использовать глобальную функцию AfxThrowOleException.
Члены класса
static SCODE PASCAL Process( const CException* pAnyException );
Метод возвращает код состояния OLE.
Параметры: pAnyException - указатель на обрабатываемое исключение.
Переменные класса SCODE m_sc;
Переменная m_sc содержит код состояния OLE, указывающий причину возникновения ошибки.
Класс COleDispatchException
Класс COleDispatchException предназначен для управления исключе- | ниями, возникающими при работе с OLE automation.
Для непосредственного броска данного исключения можно использовать глобальную функцию AfxThrowOleDispatchException.
Члены класса DWORD m_dwHelpContext;
Данная переменная класса указывает ID контекста файла справки, установленный методом AfxThrowOleDispatchException, выполнившем бросок исключения.
CString m_strDescription;
Переменная содержит текст описания ошибки (например: "Диск переполнен").
CString m_strHelpFile;
Переменная содержит имя файла справки приложения. CString m_strSource;
Переменная содержит имя приложения, бросившего данное исключение. WORD m_wCode;
Переменная содержит код ошибки, сформированный методом AfxThrowOleDispatchException, выполнившим бросок исключения.
Класс CinternetException
Класс CInternetException представляет исключения, возникающие от выполнения Internet-операций. Для непосредственного броска данного исключения можно использовать глобальную функцию AfxThrowInternetException.
Члены класса
CInternetException( DWORD dwError);
Конструктор класса. ,
Параметры:
dwError - ошибка, вызвавшая возникновение исключения. CInternetException::m_dwContext
Переменная класса m_dwContext содержит значение контекста, соответствующего Internet-операции, вызвавшей данное исключение. Первоначально идентификатор контекста специфицируется в классе
CInternetSession, а затем передается в производные классы ClnternetConnection и CInteraetFile. Разработчик может по своему усмотрению переопределить значение параметра dwContext. Этот параметр используется для всех операций данного объекта, а также определяет информацию о статусе операции, возвращаемую методом CInternetSession::OnStatusCallback.
CInternetException::m_dwError
Переменная содержит код ошибки. Это может быть как код системной ошибки, описанный в файле WINERROR.H, так и код ошибки из файла WININET.H.