Spec-Zone.ru › Octave 5

12.2.1 Выдача предупреждений

Выдать предупреждение можно из любого кода, используя функцию warning. В самом простом виде, функция warning принимает строку, описывающую предупреждение, в качестве входного аргумента. Например, следующий код проверяет, является ли переменная «a» неотрицательной; если нет, выводит предупреждение и устанавливает «a» в ноль.

a = -1;
if (a < 0)
  warning ("'a' must be non-negative.  Setting 'a' to zero.");
  a = 0;
endif
     -| 'a' must be non-negative.  Setting 'a' to zero.

Поскольку предупреждения не являются фатальными для выполняемой программы, невозможно перехватить предупреждение с помощью оператора try или аналогичного. Однако можно получить последнее предупреждение в виде строки, используя функцию lastwarn.

Также можно назначить идентификационную строку предупреждению. Если у предупреждения есть такой идентификатор, пользователь может включить или отключить это предупреждение, как будет описано в следующем разделе. Чтобы назначить идентификатор предупреждению, просто вызовите warning с двумя строковыми аргументами, где первый — идентификационная строка, а второй — фактическое предупреждение. Обратите внимание, что идентификаторы предупреждений имеют формат "NAMESPACE:WARNING-NAME". Пространство имён "Octave" используется для собственных предупреждений Octave. Любая другая строка доступна в качестве пространства имён для пользовательских предупреждений.

warning (шаблон, …)
warning (id, шаблон, …)
warning ("on", id)
warning ("off", id)
warning ("error", id)
warning ("query", id)
warning (состояние, id, "local")
warning (warning_struct)
warning_struct = warning (…)
warning (состояние, режим)

Выводит сообщение о предупреждении или управляет поведением системы предупреждений Octave.

Первый вызов использует шаблон шаблон и дополнительные аргументы для отображения сообщения в потоке stderr. Сообщение форматируется по тем же правилам, что и функции printf (см. Форматированный вывод), и предваряется строкой ‘warning: ’. Используйте эту функцию, когда нужно уведомить пользователя об необычном состоянии, но только когда вашей программе имеет смысл продолжить выполнение. Например:

warning ("foo: maybe something wrong here");

Если сообщение о предупреждении не заканчивается символом новой строки, Octave выведет трассировку всех вызовов функций, приведших к предупреждению. Если сообщение о предупреждении заканчивается символом новой строки, Octave подавит сообщения трассировки при возврате управления на верхний уровень. Более подробные сведения и примеры см. в error.

Дополнительный идентификатор предупреждения id позволяет пользователям включать или отключать предупреждения, помеченные этим идентификатором. Идентификатор сообщения — это строка вида "NAMESPACE:WARNING-NAME". Собственные предупреждения Octave используют пространство имён "Octave" (см. warning_ids). Например:

warning ("MyNameSpace:check-something",
         "foo: maybe something wrong here");

Второй вызов предназначен для изменения и/или запроса состояния предупреждений. Первый входной аргумент должен быть строкой состояние ("on", "off", "error", или "query"). за которым следует необязательный идентификатор предупреждения id или "all" (по умолчанию).

Необязательный выходной аргумент warning_struct — это структура или массив структур с полями "state" и "identifier". Аргумент состояние может иметь следующие значения:

"on"|"off":

Включить или выключить отображение предупреждений, идентифицированных id, и необязательно вернуть их предыдущее состояние stout.

"error":

Преобразовать предупреждения, идентифицированные id, в ошибки и необязательно вернуть их предыдущее состояние stout.

"query":

Возвратить текущее состояние предупреждений, идентифицированных id.

Структура или массив структур warning_struct с полями "state" и "identifier" может быть передана в качестве входных данных для достижения аналогичных результатов. Следующий пример демонстрирует, как временно отключить предупреждение и затем восстановить его исходное состояние:

loglog (-1:10);
## Disable the previous warning and save its original state
[~, id] = lastwarn ();
warnstate = warning ("off", id);
loglog (-1:10);
## Restore its original state
warning (warnstate);

Если указан конечный аргумент "local", состояние предупреждения будет установлено временно до конца текущей функции. Изменения состояний предупреждений, установленные локально, влияют на текущую функцию и все функции, вызываемые из текущей области видимости. Предыдущее состояние предупреждения восстанавливается при возвращении из текущей функции. Опция "local" игнорируется, если используется в рабочем пространстве верхнего уровня.

Без входных аргументов warning () эквивалентно warning ("query", "all"), за исключением того, что при отсутствии выходного аргумента состояние предупреждений отображается в stderr.

Уровень подробности системы предупреждений также может регулироваться двумя режимами режим:

"backtrace":

Включить/выключить отображение стека вызовов после сообщения о предупреждении

"verbose":

Включить/выключить отображение дополнительной информации после сообщения о предупреждении

В этом случае аргумент состояние может быть только "on" или "off".

Примечание по реализации: для совместимости с MATLAB, управляющие последовательности в шаблоне (например, "\n" => новая строка) обрабатываются независимо от того, определен ли шаблон с одинарными кавычками, если существует два или более входных аргумента. Чтобы отключить обработку управляющих последовательностей, используйте двойной обратный слэш перед последовательностью (например, "\\n") или используйте функцию regexptranslate.

См. также: warning_ids, lastwarn, error.

[msg, msgid] = lastwarn ()
lastwarn (msg)
lastwarn (msg, msgid)

Запрос или установка последнего сообщения о предупреждении.

При вызове без входных аргументов возвращаются последнее сообщение о предупреждении и идентификатор сообщения.

С одним аргументом устанавливает последнее сообщение о предупреждении на msg.

С двумя аргументами также устанавливает идентификатор последнего сообщения.

См. также: warning, lasterror, lasterr.

Функции, поставляемые с Octave, могут выдавать следующие предупреждения.

Octave:abbreviated-property-match

По умолчанию предупреждение Octave:abbreviated-property-match включено.

Octave:addpath-pkg

Если предупреждение Octave:addpath-pkg включено, Octave выведет предупреждение, когда директория пакета (например, +package_name) добавляется в path. Обычно в путь загрузки следует добавлять только родительскую директорию, содержащую директорию пакета. По умолчанию предупреждение Octave:addpath-pkg включено.

Octave:array-as-logical

Если предупреждение Octave:array-as-logical включено, Octave выведет предупреждение, когда массив размером более 1x1 используется в качестве значения истинности в операторах if, while или until. По умолчанию предупреждение Octave:array-as-logical отключено.

Octave:array-to-scalar

Если предупреждение Octave:array-to-scalar включено, Octave выведет предупреждение при попытке неявного преобразования массива в скалярное значение. По умолчанию предупреждение Octave:array-to-scalar отключено.

Octave:array-to-vector

Если предупреждение Octave:array-to-vector включено, Octave выведет предупреждение при попытке неявного преобразования массива в векторное значение. По умолчанию предупреждение Octave:array-to-vector отключено.

Octave:assign-as-truth-value

Если предупреждение Octave:assign-as-truth-value включено, выводится предупреждение для операторов, подобных

if (s = t)
  …

поскольку такие операторы не являются распространёнными, и вероятно, предполагалось написать

if (s == t)
  …

вместо этого.

Иногда полезно писать код, содержащий присваивания внутри условия операторов while или if. Например, операторы, подобные

while (c = getc ())
  …

распространены в программировании на языке C.

Можно избежать всех предупреждений о таких операторах, отключив предупреждение Octave:assign-as-truth-value, но это также может привести к пропуску реальных ошибок, таких как

if (x = 1)  # intended to test (x == 1)!
  …

В таких случаях можно подавить предупреждения для определённых операторов, записав их с дополнительной парой скобок. Например, переписав предыдущий пример как

while ((c = getc ()))
  …

можно предотвратить вывод предупреждения для данного оператора, при этом позволяя Octave предупреждать об остальных присваиваниях, используемых в условных операторах.

По умолчанию предупреждение Octave:assign-as-truth-value включено.

Octave:associativity-change

Если предупреждение Octave:associativity-change включено, Octave выведет предупреждение о возможных изменениях в значении некоторого кода из-за изменений ассоциативности некоторых операторов. Изменения ассоциативности обычно вводятся для совместимости с MATLAB. По умолчанию предупреждение Octave:associativity-change включено.

Octave:autoload-relative-file-name

Если Octave:autoload-relative-file-name включено, Octave выведет предупреждение при разборе вызовов функции autoload() с относительными путями к файлам функций. Это обычно происходит при использовании вызовов autoload() в файлах PKG_ADD, когда файл PKG_ADD не находится в той же директории, что и файл .oct, на который ссылается команда autoload(). По умолчанию предупреждение Octave:autoload-relative-file-name включено.

Octave:built-in-variable-assignment

По умолчанию предупреждение Octave:built-in-variable-assignment включено.

Octave:deprecated-function

Если предупреждение Octave:deprecated-function включено, при обнаружении Octave устаревшей функции, запланированной на удаление из Octave, выводится предупреждение. По умолчанию предупреждение Octave:deprecated-function включено.

Octave:deprecated-keyword

Если предупреждение Octave:deprecated-keyword включено, при обнаружении Octave устаревшего ключевого слова, запланированного на удаление из Octave, выводится предупреждение. По умолчанию предупреждение Octave:deprecated-keyword включено.

Octave:deprecated-property

Если предупреждение Octave:deprecated-property включено, при обнаружении Octave устаревшего графического свойства, запланированного на удаление из Octave, выводится предупреждение. По умолчанию предупреждение Octave:deprecated-property включено.

Octave:divide-by-zero

Если предупреждение Octave:divide-by-zero включено, при обнаружении Octave деления на ноль выводится предупреждение. По умолчанию предупреждение Octave:divide-by-zero включено.

Octave:eigs:UnconvergedEigenvalues

Если предупреждение Octave:eigs:UnconvergedEigenvalues включено, функция eigs выведет предупреждение, если количество вычисленных собственных значений меньше, чем количество запрошенных собственных значений. По умолчанию предупреждение Octave:eigs:UnconvergedEigenvalues включено.

Octave:erase:chararray

Если предупреждение Octave:erase:chararray включено, функция erase выведет предупреждение, если входной шаблон является символьной строкой, а не строкой или ячейкой строк. По умолчанию предупреждение Octave:erase:chararray включено.

Octave:data-file-in-path

Если предупреждение Octave:data-file-in-path включено, при отсутствии целевого файла операции (например, load или fopen) в прямом доступе, но обнаружении файла в списке поиска Octave, выводится предупреждение. Предупреждение может указывать на использование целевого файла, отличного от предполагаемого программистом. По умолчанию предупреждение Octave:data-file-in-path включено.

Octave:function-name-clash

Если предупреждение Octave:function-name-clash включено, при обнаружении Octave, что имя функции, определённой в файле функции, отличается от имени файла, выводится предупреждение (если имена не совпадают, имя, объявленное внутри файла, игнорируется). По умолчанию предупреждение Octave:function-name-clash включено.

Octave:future-time-stamp

Если предупреждение Octave:future-time-stamp включено, Octave выведет предупреждение, если найдёт файл функции с отметкой времени в будущем. По умолчанию предупреждение Octave:future-time-stamp включено.

Octave:glyph-render

По умолчанию предупреждение Octave:glyph-render включено.

Octave:imag-to-real

Если предупреждение Octave:imag-to-real включено, выводится предупреждение для неявных преобразований комплексных чисел в вещественные числа. По умолчанию предупреждение Octave:imag-to-real отключено.

Octave:language-extension

Выводить предупреждения при использовании функций, уникальных для языка Octave, которые могут отсутствовать в MATLAB. По умолчанию предупреждение Octave:language-extension отключено. Также могут быть полезны опции запуска Octave --traditional или --braindead, см. Опции командной строки.

Octave:legacy-function

Если предупреждение Octave:legacy-function включено, выводится предупреждение при обнаружении Octave функции, которую MATLAB посоветовал избегать. Функция может стать устаревшей в будущем и быть удалена, в этом случае предупреждение изменится на Octave:deprecated-function, а функция будет существовать ещё в течение двух версий Octave перед удалением. По умолчанию предупреждение Octave:legacy-function включено.

Octave:logical-conversion

По умолчанию предупреждение Octave:logical-conversion включено.

Octave:lu:sparse_input

Если предупреждение Octave:lu:sparse_input включено, Octave выведет предупреждение при вызове функции lu с разреженным входом и менее четырьмя выходными аргументами. В этом случае сохраняющие разреженность столбцовые перестановки не выполняются, и результат может быть неточным. По умолчанию предупреждение Octave:lu:sparse_input включено.

Octave:missing-glyph

По умолчанию предупреждение Octave:missing-glyph включено.

Octave:missing-semicolon

Если предупреждение Octave:missing-semicolon включено, Octave выведет предупреждение, если операторы в определениях функций не заканчиваются точкой с запятой. По умолчанию предупреждение Octave:missing-semicolon отключено.

Octave:mixed-string-concat

Если предупреждение Octave:mixed-string-concat включено, выводится предупреждение при конкатенации смешанных двойных и одинарных строк. По умолчанию предупреждение Octave:mixed-string-concat отключено.

Octave:nearly-singular-matrix
Octave:singular-matrix

Эти предупреждения генерируются, если обратная матрица (почти) вырожденной матрицы. По умолчанию предупреждения Octave:nearly-singular-matrix и Octave:singular-matrix включены.

Octave:neg-dim-as-zero

Если предупреждение Octave:neg-dim-as-zero включено, выводится предупреждение для выражений, подобных

eye (-1)

По умолчанию предупреждение Octave:neg-dim-as-zero отключено.

Octave:nested-functions-coerced

По умолчанию предупреждение Octave:nested-functions-coerced включено.

Octave:noninteger-range-as-index

По умолчанию предупреждение Octave:noninteger-range-as-index включено.

Octave:num-to-str

Если предупреждение Octave:num-to-str включено, выводится предупреждение при неявном преобразовании чисел в их эквиваленты UTF-8 кодированных символов при построении строк, используя смесь строк и чисел в матричной нотации. Например,

[ "f", 111, 111 ]
⇒ "foo"

вызывает предупреждение, если предупреждение Octave:num-to-str включено. По умолчанию предупреждение Octave:num-to-str включено.

Octave:possible-matlab-short-circuit-operator

Если предупреждение Octave:possible-matlab-short-circuit-operator включено, Octave выведет предупреждение при использовании некороткозамыкающихся операторов & и | внутри условий if или while. Обычно они никогда не короткозамыкаются, но они короткозамыкаются, когда используются в условии. По умолчанию предупреждение Octave:possible-matlab-short-circuit-operator включено.

Octave:precedence-change

Если предупреждение Octave:precedence-change включено, Octave выведет предупреждение о возможных изменениях в значении некоторого кода из-за изменений порядка следования некоторых операторов. Изменения порядка следования обычно вводятся для совместимости с MATLAB. По умолчанию предупреждение Octave:precedence-change включено.

Octave:recursive-path-search

По умолчанию предупреждение Octave:recursive-path-search включено.

Octave:remove-init-dir

Функция path изменяет путь поиска, который Octave использует для поиска функций. Можно установить путь так, чтобы он исключал собственные встроенные функции Octave. Если Octave:remove-init-dir предупреждение включено, Octave выведет предупреждение, когда функция path использовалась таким образом, что может сделать Octave неработоспособным. По умолчанию предупреждение Octave:remove-init-dir включено.

Octave:reload-forces-clear

Если несколько функций были загружены из одного файла, Octave должен очистить все функции, прежде чем любая из них сможет быть перезагружена. Если предупреждение Octave:reload-forces-clear включено, Octave предупредит вас об этом и выведет список дополнительных функций, которые ему придётся очистить. По умолчанию предупреждение Octave:reload-forces-clear включено.

Octave:resize-on-range-error

Если предупреждение Octave:resize-on-range-error включено, выводится предупреждение при изменении размера матрицы с помощью индексированного присваивания с индексами, выходящими за текущие границы. По умолчанию предупреждение Octave:resize-on-range-error выключено.

Octave:separator-insert

Выводить предупреждение, если запятые или точки с запятой могут быть автоматически вставлены в литеральные матрицы. По умолчанию предупреждение Octave:separator-insert выключено.

Octave:shadowed-function

По умолчанию предупреждение Octave:shadowed-function включено.

Octave:single-quote-string

Выводить предупреждение, если для введения строковой константы используется символ одиночной кавычки. По умолчанию предупреждение Octave:single-quote-string выключено.

Octave:sqrtm:SingularMatrix

По умолчанию предупреждение Octave:sqrtm:SingularMatrix включено.

Octave:str-to-num

Если предупреждение Octave:str-to-num включено, выводится предупреждение при неявном преобразовании строк в их числовые последовательности байтов UTF-8. Например,

"abc" + 0
⇒ 97 98 99

вызывает предупреждение, если включено предупреждение Octave:str-to-num. По умолчанию предупреждение Octave:str-to-num выключено.

Octave:variable-switch-label

Если предупреждение Octave:variable-switch-label включено, Octave выведет предупреждение, если метка переключателя не является константой или выражением константы. По умолчанию предупреждение Octave:variable-switch-label выключено.

© 1996–2022 The Octave Project Developers
Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies.
Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one.
Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions.
https://docs.octave.org/v5.2.0/Issuing-Warnings.html

Spec-Zone.ru

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