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

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

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

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

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

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

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

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


Spec-Zone.ru

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