Spec-Zone.ru › Elisp

Основы предупреждений

Каждое предупреждение — это текстовое сообщение, которое объясняет пользователю проблему, и связанный с ним уровень важности, обозначаемый символом. Ниже перечислены поддерживаемые уровни важности в порядке убывания и их значения:

:emergency

Проблема, которая вскоре серьёзно нарушит работу Emacs, если пользователь не займётся ею незамедлительно.

:error

Сообщение о данных или обстоятельствах, которые сами по себе являются ошибочными.

:warning

Сообщение о данных или обстоятельствах, которые сами по себе не являются ошибочными, но вызывают подозрение на возможную проблему.

:debug

Сообщение с информацией, которая может быть полезна, если пользователь сейчас отлаживает программу на Lisp, выдавшую предупреждение.

Если ваша программа обнаруживает недопустимые входные данные, она может выдать ошибку Lisp, вызвав error или signal (см. Как выдавать ошибку), либо сообщить о предупреждении с уровнем важности :error. Выдать ошибку Lisp проще всего, но в этом случае программа, выдавшая ошибку, не сможет продолжить выполнение. Если вы готовы реализовать возможность продолжать обработку, несмотря на недопустимые данные, правильным способом сообщить пользователю о проблеме будет предупреждение с уровнем важности :error. Например, компилятор байт-кода Emacs Lisp может таким образом сообщить об ошибке и продолжить компиляцию других функций. (Если программа выдаёт ошибку Lisp, а затем обрабатывает её с помощью condition-case, пользователь не увидит сообщение об ошибке; если вместо этого сообщить об ошибке как о предупреждении, этой проблемы не возникнет.)

Помимо уровня важности, у каждого предупреждения есть тип предупреждения, который служит для его классификации. Тип предупреждения — это либо символ, либо список символов. Если это символ, им должна быть группа настроек, используемая для пользовательских параметров программы; если это список, его первым элементом должна быть эта группа настроек. Например, для предупреждений компилятора байт-кода используется тип предупреждения (bytecomp). Если тип предупреждения представляет собой список, его элементы после первого, которыми могут быть произвольные символы, задают подкатегории предупреждения: они отображаются пользователю, чтобы лучше объяснить характер предупреждения.

Функция: display-warning type message &optional level buffer-name

Эта функция сообщает о предупреждении, используя строку message как текст предупреждения, а type — как тип предупреждения. level должен задавать уровень важности; если он не указан или равен nil, используется :warning.

Параметр buffer-name, если он не равен nil, задаёт имя буфера для записи сообщения предупреждения. По умолчанию используется *Warnings*.

Функция: lwarn type level message &rest args

Эта функция сообщает о предупреждении, используя значение, возвращаемое (format-message message args…), в качестве текста сообщения в буфере *Warnings*. Во всём остальном она эквивалентна display-warning.

Функция: warn message &rest args

Эта функция сообщает о предупреждении, используя значение, возвращаемое (format-message message args…), в качестве текста сообщения, emacs в качестве типа предупреждения и :warning в качестве уровня важности. Эта функция существует только для совместимости; мы рекомендуем не использовать её, поскольку следует указывать конкретный тип предупреждения.

Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Warning-Basics.html

Spec-Zone.ru

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