DeepEdit!

Программирование баз данных на Oracle, техническая документация, литература, статьи и публикации

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Понятие исключительной ситуации

В основе PL/SQL лежит язык программирования Ada, одним из свойств которого является механизм исключительных ситуаций. При использова­нии этого механизма написанные на PL/SQL программы становятся го­раздо надежнее, и во время их выполнения предоставляется возможность обработки как запланированных, так и незапланированных ошибок. Иск­лючительные ситуации в PL/SQL аналогичны также исключительным си­туациям в Java. Например, исключительные ситуации Java порождаются и перехватываются способом, подобным PL/SQL. Однако, в отличие от Java, исключительные ситуации PL/SQL не являются объектами и не име­ют методов.
Классификация ошибок, возникающих в программах PL/SQL, приве­дена в таблице 7.1.
Исключительные ситуации создаются только для обработки ошибок
так как в операторе SELECT неверно записан идентификатор students:
времени выполнения, но не для ошибок компиляции. Ошибки компиля­ции распознаются системой поддержки PL/SQL, и сообщения о них пе­редаются пользователю. Такие ошибки программа обработать не может, поскольку на этом этапе она еще не выполняется. Ниже приводится блок, в котором возникает ошибка компиляции:

В случае возникновения ошибки инициируется (raised) исключитель­ная ситуация. При этом управление программой передается обработчику исключительной ситуации, который является отдельным фрагментом программы. Отделение обработки ошибок от остальной части програм­мы упрощает логическую структуру программы и обеспечивает фикса­цию всех ошибок.
Для обеспечения обработки ошибок в тех языках программирования, в которых не поддерживается модель исключительных ситуаций (таких, как язык С), программы должны содержать операторы, реализующие эту обработку. Например:
Обратите внимание: проверка ошибок должна выполняться после каж­дого оператора программы. Если не внести в программу такую проверку, ошибки не будут обработаны надлежащим образом. Кроме того, операторы, реализующие обработку ошибок, засоряют программу и затрудняют пони­мание ее логической структуры. Сравним программу, приведенную в пре­дыдущем примере, с аналогичной программой, написанной на PL/SQL:
что раздел обработки ошибок отделен от логической схемы программы. В этом случае:
Логика программы нагляднее и легче для понимания.
Программа распознает и обработает любую ошибку независимо от того, какой оператор является причиной ошибки. Отметим, одна­ко, что выполнение программы не будет продолжаться с оператора, вызвавшего ошибку. Вместо этого выполнение будет продолжаться в обработчике исключительных ситуаций, а затем во внешнем блоке.

 









jAntivirus