Spec-Zone.ru › Ada 95
Справочник по Ada 95

1.1.5 Классификация ошибок

Требования к реализации

Определение языка классифицирует ошибки на несколько категорий:
  • Ошибки, которые должны быть обнаружены любой реализацией Ada до выполнения программы;
    Эти ошибки соответствуют любому нарушению правила, указанного в данном Международном стандарте, кроме перечисленных ниже. В частности, нарушение любого правила, использующего термины «должен», «разрешено», «дозволено», «законно» или «незаконно», относится к этой категории. Любая программа, содержащая такую ошибку, не является законной программой Ada; с другой стороны, тот факт, что программа законна, не означает, ipso facto, что программа свободна от других видов ошибок.
    Правила далее классифицируются как правила компиляции или правила после компиляции в зависимости от того, должно ли нарушение быть обнаружено в момент предоставления единицы компиляции компилятору, или может быть отложено до момента включения единицы компиляции в раздел программы.
  • Ошибки, которые должны быть обнаружены во время выполнения программы Ada;
    Соответствующие ситуации ошибок связаны с именами предопределенных исключений. Каждый компилятор Ada должен генерировать код, который вызывает соответствующее исключение, если такая ситуация ошибки возникает во время выполнения программы. Если такая ситуация ошибки обязательно возникнет при каждом выполнении конструкции, то реализация имеет право (хотя и не обязана) сообщить об этом во время компиляции.
  • Ограниченные ошибки;
    Правила языка определяют определенные виды ошибок, которые не обязательно должны быть обнаружены до или во время выполнения, но если они не обнаружены, то диапазон возможных последствий должен быть ограничен. Ошибки этой категории называются ограниченными ошибками. Возможные последствия каждой такой ошибки указываются для каждой такой ошибки, но в любом случае одним из возможных последствий ограниченной ошибки является возбуждение исключения Program_Error.
  • Ошибка выполнения.
    В дополнение к ограниченным ошибкам, правила языка определяют определенные виды ошибок как приводящие к ошибке выполнения. Как и ограниченные ошибки, реализация не обязана обнаруживать такие ошибки до или во время выполнения. В отличие от ограниченных ошибок, нет указанного языком ограничения на возможные последствия ошибки выполнения; эффект, как правило, непредсказуем.

Разрешения реализации

Реализация может предоставить нестандартные режимы работы. Обычно эти режимы выбираются с помощью pragma или переключателя командной строки при вызове компилятора. При работе в нестандартном режиме реализация может отклонять compilation_units, которые не соответствуют дополнительным требованиям, связанным с режимом, таким как чрезмерное количество предупреждений или нарушение правил стиля программирования. Аналогично, в нестандартном режиме реализация может применять специальные оптимизации или альтернативные алгоритмы, которые имеют смысл только для программ, удовлетворяющих определенным критериям, указанным реализацией. В любом случае, реализация должна поддерживать стандартный режим, соответствующий требованиям этого Международного стандарта; в частности, в стандартном режиме все законные compilation_units должны приниматься.

Рекомендации для реализации

Если реализация обнаруживает ограниченную ошибку или ошибку выполнения, она должна возбудить Program_Error.


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API