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

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

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

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

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

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

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

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


Spec-Zone.ru

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