Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Свойства и конструкторы исключенийСодержание книги
Поиск на нашем сайте
Message - текст, выводимый обработчиком в окне сообщения. HelpContext ‑ номер экрана контекстно‑зависимой справки, вызываемой клавишей F1 из окна сообщения об ошибке. Файл справки предварительно нужно создать и связать его с приложением командой Project/Options/Application/Help file (п. 5.1). Конструкторы (методы) исключений позволяют сформировать свойства Message и Help. Create (const Msg: string). CreateFmt (const Msg: string, const Args:array of const). CreateRes (Ident: integer). CreateResFmt (Ident:integer, const Args:array of const). CreateHelp (const Msg: string, HelpContext:integer). CreateFmtHelp (const Msg: string, const Args:array of const, HelpContext). CreateResHelp (Ident,HelpContext:integer). CreateResFmtHelp (Ident:integer, const Args:array of const, HelpContext). Конструкторы, в имени которых нет Fmt или Res, присваивают свойству Message значение аргумента Msg. Конструкторы, в имени которых есть Fmt, содержат параметр Msg с описанием формата редактирования элементов массива Args (аналогично функции Format). Конструкторы, в имени которых есть Help, присваивают свойству HelpContext значение одноименного аргумента. Конструкторы, в имени которых есть Res, параметром Ident задают идентификатор строки ресурса (п. 1.3.1.2) сообщения или строки описания формата, если в имя входит Fmt. Примеры использования конструкторов: Type Emy=Class(Exception); // создание класса исключений (п. 1.6.9) Raise Emy.Create(‘Ошибка в параметрах’);//генерация исключения (п.1.6.7) Raise Emy.CreateFmt(‘Задано %d, а нужно%d’,[4,9]); // формат. сообщение Raise EZeroDivide.Create(‘Деление на ноль’); // генерация исключения Raise Emy.CreateRes(9); //свойство Message=строке ресурсов с номером 9 Raise Emy.CreateResFmt(8,[5,7]); // Message=отформатированные 5 и 7. 1.6.4. Блок зачистки Try‑ Finally ‑ End Try <операторы> Finally <всегда выполняемые операторы> End; Операторы, которые указаны после Finally, выполняются и при успешном, и при аварийном завершении работы операторов, указанных перед Finally. Это позволяет корректно завершить работу программы в исключительной ситуации, например, освободить динамически выделенную память, закрыть файлы, удалить временные файлы. Зачистка в разделе модуля Finalization В этом разделе можно проверить, завершается программа нормально (ExceptAddr=Nil) или аварийно, используя функцию ExceptAddr. Для этого следует указать хотя бы пустой раздел модуля Initialization. 1.6.6. Блок обработки исключений Try ‑ Except ‑ End Try <операторы> Except <обработка исключений> [ Else <операторы>] End; Операторы, которые указаны после Except, выполняются только при аварийном завершении работы операторов, указанных перед Except. Для задания обработки исключений в этом блоке используются операторы: On <класс исключений> Do <оператор> или другие операторы; смешение операторов On с другими операторами не допускается. Операторы, указанные после Else, выполняются для всех, не перехваченных ранее исключений. Пример: Var A,C,B: Shortint; Begin A:=1; B:=100; Try C:=StrToInt(Edit1.Text); A:=(B Div C); //обычное выполнение Except //начало блока обработки исключений On EConvertError Do ShowMessage('Ошибка ‑ не число! Повторите ввод'); On EdivByZero Do ShowMessage('Ошибка ‑ ноль! Повторите ввод'); On EIntOverFlow Do If (B*C)>=0 Then A:=127 Else A:=‑128; End; //окончание блока Некоторые исключения имеют дополнительные свойства (поля). Например, исключение EinOutError имеет свойство ErrorCode типа Integer с кодом ошибки ввода‑вывода. Для использования таких свойств. Оператор On записывается в виде: On < метка>: <класс исключений> Do <операторы с конструкциями <метка>. <свойство>; Пример контроля за операциями файлового ввода - вывода: On 10: EinOutError Do //начало обработки исключений при вводе ‑ выводе Begin Case 10.Errorcode Of //оператор выбора варианта обработки 2: S:=’Файл ‘+S+’ не найден!’; //код ошибки=2 106: S:=’Ошибка ввода при работе с файлом ‘+S; //ошибка=106 End; //окончание обработки вариантов ошибок ShowMessage(S); //вывод сообщения об ошибке End; //окончание обработки исключений при вводе‑выводе Допускаются конструкции вида: Try... Try... Finally... End; Except... [Else... ] End; Допускается вложенность блоков Try...Except. В этом случае вначале ищется обработчик в блоке, в котором создалось исключение, и если его нет, то продолжается поиск в обрамляющем блоке, и. т. д.
|
||||
Последнее изменение этой страницы: 2017-02-08; просмотров: 330; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.147.67.237 (0.006 с.) |