Кент Рейсдорф. 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);

}

Обратите внимание, что здесь захватывается ссылка на класс EIn­validGraphic. Это более предпочтительный метод захвата исключений. За­хват класса, переданного по ссылке, эквивалентен передаче класса по ссылке (см. День 4, «Классы и объектно-ориентированное программирова­ние».) Любые исключения данного типа будут теперь захватываться блоком

Вы можете включить в программу несколько блоков catch, следующих после оператора try. Предположим, например, что вы написали код, ко­торый вызывает некоторые методы VCL и некоторые функции вашей про­граммы, которые могут сформировать исключение. Если возникает VCL-исключение EInvalidGraphic, вы намерены его обработать. Кроме этого, ваш собственный код может сформировать исключение типа MyOwnExcep- tion (класс, который вы написали для обработки исключений). В таком случае вы можете написать следующий код:

Здесь вы подготовились к захвату либо исключения VCL, либо ис­ключения собственного типа. Каждый тип исключения нужно обраба­тывать раздельно, чтобы вы могли захватывать эти исключения неза­висимо.

Непосредственно после оператора try вы можете поставить столько опе­раторов catch, сколько вам нужно. Однако у вас должен быть как минимум один оператор catch, следующий сразу за контролируемым блоком. При на­личии нескольких операторов catch, они должны следовать непосредственно друг за другом, без какого-либо постороннего кода между соседними catch. Компилятор выдаст сообщение об ошибке, если вы нарушите синтаксис try/catch.

catch, а все другие типы исключений будут обработаны заданным по умол­чанию способом.

Web-дизайн (с) 2010 All rights reserved