Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
38
Добавлен:
16.02.2016
Размер:
1.52 Mб
Скачать

Пример:

extern char* pFileName; TRY

{ CFile f( pFileName, CFile::modeCreate | CFile::modeWrite ); } САТСЩ CFileException, e)

{ if( e->m_cause == CFileException: :fileNotFound )

printf( "ERROR: Файл не найден\п"); }

END_CATCH

CFileException: :m_10sError

Данная общедоступная переменная класса имеет тип LONG и содержит определяемый операционной системой код ошибки возникшего исключения.

CFileException::m_strFileName

Переменная класса, содержащая имя файла, для которого возникло данное исключение.

Класс CdaoException

Объект исключения CDaoException создается и бросается методами DAO-классов (Data Access Object). DAO-классы представляют набор объектов высокого уровня, освобождающих разработчиков от физических деталей записи и чтения записей. Эти объекты позволяют программиро­вать в терминах баз данных, таблиц, полей, индексов и запросов.

Класс CDaoException содержит общедоступные переменные класса, позво­ляющие разработчику определить причину возникновения исключения.

Для броска исключений данного класса можно использовать глобаль­ную функцию AixThrowDaoException.

При использовании MFC все ошибки, возникающие при работе с DAO-объектами, выражаются исключениями типа CDaoException. При броске исключения данного типа можно использовать члены класса CDaoException для получения информации от любых ошибок DAO-объектов, хранимых в наборе ошибок машины баз данных. При возникно­вении ошибки создается один или несколько объектов ошибок, размещае­мых в наборе ошибок. Как правило, набор ошибок состоит только из од­ного объекта ошибки. Однако при использовании источника данных, под­ключаемого через ODBC, может быть создано несколько объектов ошибок.

Набор ошибок заполняется каждый раз заново при возникновении но­вой ошибки выполнения оператора DAO.

Коды DAO-ошибок описаны в файле DAOERR.H.

Подключение данного класса выполняется оператором #include <afxdao.h>.

Члены класса cDaoException( );

Конструктор класса CDaoException. short GetErrorCount( );

Метод возвращает количество ошибок в наборе ошибок машины баз данных. Эта информация может использоваться для организации цикла обработки ошибок из набора ошибок машины баз данных (при использо­вании источника данных, подключенного через ODBC), void GetErrorInfo( int nlndex );

Метод возвращает информацию об ошибке из набора ошибок по ин­дексу ошибки.

Параметры: nlndex - номер ошибки в наборе ошибок машины баз данных.

Вызов данного метода позволяет получить следующую информацию об ошибке:

• код ошибки (Error Code),

• источник(8оигсе),

• описание (Description),

• файл справки (Help File),

• ID контекста (Help Context).

Метод GetErrorlnfo заносит эту информацию в переменную класса m_pEiTorInfo.

Переменные класса

CDaoException: :m_scode_

Значение типа SCODE, описывающее ошибку (OLE-код). CDaoException:: mnAfxDaoError

Содержит расширенный код ошибки для любой ошибки, иницииро­ванной DAO-классами.

Данная переменная может принимать следующие значения:

NO_AFX_DAOJERROR

AFX_DAO_ERROR_ENGINE_INITIALIZATION AFX_DAO_ERROR_DFX_BIND AFX_DAO_ERROR_OBJECT_NOT_OPEN

CDaoException::m_pErrorInfo

Указатель на объект CDaoErrorlnfo, содержащий информацию об ошибке.

Информация об ошибке описывается структурой, приведенной в сле­дующей таблице.

Члены CDaoErrorlnfo Описание mJErrorCode DAO-код ошибки m_strSource Имя объекта или приложения, инициировав­шего возникновение ошибки m strDescription Строка, описывающая ошибку m strHelpFile Файл справки с информацией о данной ошибке m lHelpContext ID темы в файле справки

Класс CDBException

Объект CDBException описывает исключение, инициируемое классами баз данных (ODBC-классами). Общедоступные переменные данного класса можно использовать для получения информации о возникшей ошибке.

Для броска данного исключения можно использовать глобальную функцию AfxThrowDBException.

Для использования возможностей данного класса следует подключить библиотеку <afcdb.h>.

Члены класса

CDBException: :m_nRetCode

Переменная типа RETCODE содержит код ошибки выполнения API-функции (Application Programming Interface) ODBC-приложения. Данный тип включает коды с префиксом SQL, определяемые ODBC, и коды с префиксом AFX_SQL, определяемые классами баз данных.

Данная переменная может принимать одно из следующих значений:

AFX_SQL_ERROR_API_

AFX_SQL_ERROR_CONNECT_FAIL

AFX_SQL_ERROR_DATA_TRUNCATED

AFX_SQL_ERROR_DYNASET_NOT_SUPPORTED

AFX_SQL_ERROR_EMPTY_COLUMN_LIST

AFX_SQL_ERROR_FIELD_SCHEMA_MISMATCH

AFX_SQL_ERROR_ILLEGAL_MODE

AFX_SQL_ERROR_LOCK_MODE_NOT_SUPPORTED

AFX_SQL_ERROR_MULTIPLE_ROWS_AFFECTED

AFX_SQL_ERROR_NO_CURRENT_RECORD

AFX_SQL_ERROR_NO_POSITIONEELUPDATES

AFX_SQL_ERROR_NO_ROWS_AFFECTED

AFX_SQL_ERROR_ODBC_LOAD_FAILED

AFX_SQL_ERROR_ODBC_V2_REQUIRED

AFX_SQL_ERROR_RECORDSET_FORWARD_ONLY

AFX_SQL_ERROR_SNAPSHOT_NOT_SUPPORTED

AFX_SQL_ERROR_SQL_CONFORMANCE

AFX_SQL_ERROR_SQL_NO_TOTAL

AFX_SQL_ERROR_RECORDSET_READONLY

SQL_ERROR

SQLJNVALID_HANDLE.

CDBException::m_strError

Данная переменная класса содержит строку, описывающую ошибку. CDBException::m_strStateNativeOrigin

Данная переменная класса содержит строку, описывающую ошибку в | терминах кодов ошибок, возвращаемых средствами ODBC.

Строка представляется в nfrjq форме: "State:%s,Native:%ld,Origin:%s". В ней I указываются следующие три кода:

• код SQLSTATE, представляющий пятисимвольный код ошибки ODBC, возвращаемый параметром szSqlState функции ::SQLError;

• код ошибки, указываемый для источника данных, возвращаемый пара-^ j метром pfNativeError функции ::SQLError;

• текст сообщения об ошибке, возвращаемый параметром szErrorMsg функции ::SQLError. Это сообщение содержит ряд имен, заключенных в квадратные скобки. Эти имена добавляются по мере передачи ошиб-ки от источника к пользователю каждым компонентом ODBC: источ­ником данных, драйвером, машиной баз данных.

Пример:

От ODBC:

"State:S0022,Native:207,Origin:[Microsoft][ODBC SQL Server Driver][SQL Server] Invalid column name 'ColName'" В m_strStateNativeOrigm: "State:S0022,Native:207,Origin: [Microsoft] [ODBC SQL Server Driver] [SQL

Server]"

В m_strError:

"Invalid column name 'ColName'"

Класс CmemoryException

Объект CMemoryException создается при запросе отсутствующей памя­ти. Это исключение бросается автоматически оператором new. Для того, чтобы избежать автоматического броска исключения при отсутствии тре­буемой для объекта памяти, следует использовать, например, функцию вы­деления памяти malloc.

Для непосредственного броска данного исключения следует использо­вать глобальную функцию AixThrowMemoryException.

Класс CnotSupportedException

Исключение CNotSupportedException происходит в результате запроса неподдерживаемых операций. Для непосредственного броска данного исключения можно использовать глобальную функцию AfxThrowNotSupportedException.

Класс CresourceException

Объект CResourceException создается в том случае, если Windows не может найти или разместить требуемый ресурс.

Для непосредственного броска данного исключения можно использо­вать глобальную функцию AfxThrowResourceException.

Класс CuserException

Исключение CUserException используется для прерывания операций, инициированных пользователем. Как правило, это исключение бросается после вызова глобальной функции AfrMessageBox, отображающей окно сообщения об ошибке.

Для непосредственного броска данного исключения можно использо­вать глобальную функцию AfxThrowUserException.

Соседние файлы в папке VC++Баженова