Spec-Zone.ru › Octave 9

Далее: Включение и отключение предупреждений, Выше: Обработка предупреждений [Оглавление][Индекс]

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 (template, …) ¶
: warning (id, template, …) ¶
: warning ("on", id) ¶
: warning ("off", id) ¶
: warning ("error", id) ¶
: warning ("query", id) ¶
: warning (state, id, "local") ¶
: warning (warning_struct) ¶
: warning_struct = warning (…) ¶
: warning (state, mode) ¶

Отображает сообщение предупреждения или управляет поведением системы предупреждений 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.

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

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

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

Octave:abbreviated-property-match

Если предупреждение Octave:abbreviated-property-match включено, выводится предупреждение, если для операции, определяющей свойство объекта, используется неточная или неоднозначная подстановка. Например, для объекта графики fig со свойством 'displayname', get (fig, 'dis') вызовет предупреждение, если включено предупреждение 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:autoload-relative-file-name

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

Octave:charmat-truncated

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

Octave:classdef-to-struct

Если предупреждение Octave:classdef-to-struct включено, выводится предупреждение при принудительном преобразовании объекта classdef в структуру с struct (CLASSDEF_OBJ). Преобразование удаляет ограничения доступа к объекту и делает свойства private и protected видимыми. По умолчанию предупреждение Octave:classdef-to-struct включено.

Octave:colon-complex-argument

Если предупреждение Octave:colon-complex-argument включено, выводится предупреждение, когда один из трёх аргументов оператора двоеточия (база, приращение, предел) является комплексным значением. Например, 1:3*i вызовет вывод предупреждения. По умолчанию предупреждение Octave:colon-complex-argument включено.

Octave:colon-nonscalar-argument

Если предупреждение Octave:colon-nonscalar-argument включено, выводится предупреждение, когда один из трёх аргументов оператора двоеточия (база, приращение, предел) не является скаляром. Например, 1:[3, 5] вызовет вывод предупреждения. По умолчанию предупреждение Octave:colon-nonscalar-argument включено.

Octave:data-file-in-path

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

Octave:datevec:date-format-spec

Если предупреждение Octave:datevec:date-format-spec включено, выводится предупреждение, если спецификация формата даты содержит сомнительные спецификаторы даты или времени. Типичные плохие шаблоны — использование прописных спецификаторов даты или строчных спецификаторов времени. По умолчанию предупреждение Octave:datevec:date-format-spec включено.

Octave:deprecated-function

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

Octave:deprecated-keyword

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

Octave:deprecated-option

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

Octave:deprecated-property

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

Octave:eigs:UnconvergedEigenvalues

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

Octave:empty-index

Если предупреждение Octave:empty-index включено, Octave выведет предупреждение при использовании операторов индексирования без индекса, например, x(). По умолчанию предупреждение Octave:empty-index включено.

Octave:erase:chararray

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

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 выведет предупреждение, если глиф символа не может быть отрисован текущим шрифтом. По умолчанию предупреждение Octave:glyph-render включено.

Octave:imag-to-real

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

Octave:infinite-loop

Если предупреждение Octave:infinite-loop включено, выводится предупреждение при обнаружении бесконечного цикла, такого как for i = 1:Inf или while (1). По умолчанию предупреждение Octave:infinite-loop включено.

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:logical-conversion включено.

Octave:lu:sparse_input

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

Octave:missing-glyph

Если предупреждение Octave:glyph-render включено, Octave выведет предупреждение, если текущий шрифт не предоставляет глиф для используемого символа. По умолчанию предупреждение 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:noninteger-range-as-index

Если предупреждение Octave:noninteger-range-as-index включено, печатается предупреждение, если массив индексируется диапазоном, содержащим нецелые значения. Например,

a = [1 2 3 4 5];
b = 2.2:4.2
⇒ 1.2  2.2  3.2
a(b)
⇒ 2 3 4

вызывает предупреждение, если предупреждение 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:pow2:imaginary-ignored

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

Octave:recursive-path-search

Если предупреждение Octave:recursive-path-search включено, Octave выведет предупреждение, если addpath используется с двумя косыми чертами. По умолчанию предупреждение 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:separator-insert

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

Octave:shadowed-function

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

Octave:single-quote-string

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

Octave:sparse:double-conversion

Если предупреждение Octave:sparse:double-conversion включено, предупреждение печатается, когда происходит неявное преобразование полного, одиночного массива во время создания разреженного массива. По умолчанию предупреждение Octave:sparse:double-conversion включено.

Octave:sqrtm:SingularMatrix

Если предупреждение Octave:sqrtm:SingularMatrix включено, печатается предупреждение, если функция матричного квадратного корня sqrtm вызывается с матрицей-входом, которая является вырожденной. По умолчанию предупреждение 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:LaTeX:internal-error

Если предупреждение Octave:LaTeX:internal-error включено, печатается предупреждение всякий раз, когда движок LaTeX для текста в графиках сталкивается с проблемой. По умолчанию предупреждение Octave:LaTeX:internal-error включено.

Octave:unimplemented-matlab-functionality

Если предупреждение Octave:unimplemented-matlab-functionality включено, печатается предупреждение при использовании конструкции кода MATLAB, которую интерпретатор Octave анализирует как корректную, но для которой Octave еще не реализовал функциональность. По умолчанию предупреждение Octave:unimplemented-matlab-functionality включено.

Octave:variable-switch-label

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

Далее: Включение и отключение предупреждений, Наверх: Обработка предупреждений [Содержание][Индекс]

© 1996–2023 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/v9.2.0/Issuing-Warnings.html

Spec-Zone.ru

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