Обробка винятків

Коли програма виконує, ненормальне умов і помилок, що називаються «винятки» може статися. Вони можуть містити працює пам'яті, помилок виділення ресурсів і нездатність знайти файли.

Бібліотеки класів Фонду Microsoft використовує схеми обробки виключень, яка є зразком тісно один запропонованих комітету стандартів ANSI для C++. Обробник потрібно настроїти перед виклик функції, які можуть виникнути ненормальним ситуації. Якщо функція виявляє ненормальним стані, він кидає виключення і керування передається обробника винятків.

Кілька макросів, що входить до складу Microsoft фонду бібліотеки клас буде створено обробку винятків. Ряд інші глобальні функції допомагають кинути спеціалізованих винятки та припинити дію програм, у разі потреби. Ці макроси та глобальні функції поділяються на такі категорії:

Приклади і більш докладної інформації, перегляньте статтю - Винятки в Visual C++ програміста керівництво.

Виключення макросів

СПРОБУЙТЕ Визначає фрагмент коду для обробки винятків.
УЛОВ Визначає фрагмент коду для лову виключення з попереднього блоку СПРОБУВАТИ.
CATCH_ALL Визначає фрагмент коду для лову всі винятки з попереднього СПРОБУВАТИ блок.
AND_CATCH Визначає фрагмент коду для лову типи додаткових-винятку від попередніх СПРОБУВАТИ блоку.
AND_CATCH_ALL Визначає фрагмент коду для лову всі інші додаткові-винятку типи кинули в попередньому СПРОБУВАТИ блокувати.
END_CATCH Закінчується останній блок коду ЗЛОВИТИ або AND_CATCH.
END_CATCH_ALL Закінчується останній блок коду CATCH_ALL.
КИНУТИ Кидає вказаний виключення.
THROW_LAST Кидає в даний час обробив виняток для наступного зовнішній обробника.

Винятком кидали функцій

AfxThrowArchiveException Кидає винятків архіву.
AfxThrowFileException Кидає виключення файлів.
AfxThrowMemoryException Кидає пам'яті-винятку.
AfxThrowNotSupportedException Кидає не підтримується виключення.
AfxThrowResourceException Кидає Windows ресурс не знайдено винятку.
AfxThrowUserException Кидає виключення у дію програму, ініційований користувачем.

MFC забезпечує дві функції кидали винятком спеціально для винятків OLE:

OLE виключення функцій

AfxThrowOleDispatchException Кидає виключення в рамках на функції автоматизації OLE.
AfxThrowOleException Кидає OLE-винятку.

Для підтримки винятки бази даних, бази даних класи надають два класи виняток, CDBException і CDaoExceptionі глобальні функції, підтримувати типи-винятку:

ДАО-винятку функцій

AfxThrowDAOException Кидає CDaoException з власного коду.
AfxThrowDBException Кидає CDBException з власного коду.

MFC забезпечує таку функцію припинення:

Припинення функцій

AfxAbort Називається припинити застосування, коли критична помилка виникає.

Дивіться також CException

Index