Кент Рейсдорф. BORLAND C++BUILDER. Раздел 4
Кент Рейсдорф. BORLAND C++BUILDER. Страница 410
catch (ElnvalidGraphicS) {
Application->MessageBox(
"This file is not a Windows image file.",
"Picture Viewer Error", MB_ICONHAND | MB_OK);
}
Обратите внимание, что здесь захватывается ссылка на класс EInvalidGraphic. Это более предпочтительный метод захвата исключений. Захват класса, переданного по ссылке, эквивалентен передаче класса по ссылке (см. День 4, «Классы и объектно-ориентированное программирование».) Любые исключения данного типа будут теперь захватываться блоком
Вы можете включить в программу несколько блоков catch, следующих после оператора try. Предположим, например, что вы написали код, который вызывает некоторые методы VCL и некоторые функции вашей программы, которые могут сформировать исключение. Если возникает VCL-исключение EInvalidGraphic, вы намерены его обработать. Кроме этого, ваш собственный код может сформировать исключение типа MyOwnExcep- tion (класс, который вы написали для обработки исключений). В таком случае вы можете написать следующий код:
Здесь вы подготовились к захвату либо исключения VCL, либо исключения собственного типа. Каждый тип исключения нужно обрабатывать раздельно, чтобы вы могли захватывать эти исключения независимо.
Непосредственно после оператора try вы можете поставить столько операторов catch, сколько вам нужно. Однако у вас должен быть как минимум один оператор catch, следующий сразу за контролируемым блоком. При наличии нескольких операторов catch, они должны следовать непосредственно друг за другом, без какого-либо постороннего кода между соседними catch. Компилятор выдаст сообщение об ошибке, если вы нарушите синтаксис try/catch.
catch, а все другие типы исключений будут обработаны заданным по умолчанию способом.