12.2.1 警告の発行
この関数を使用すると、どのコードからでも警告を発行できますwarning 。最も単純な形式では、このwarning関数は警告を説明する文字列を入力引数として受け取ります。例として、次のコードは変数 '1つの' は負でない場合、警告を発し、' を設定します。1つの' をゼロにします。
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。
警告に識別文字列を割り当てることもできます。警告にそのような ID がある場合、次のセクションで説明するように、ユーザーはこの警告を有効または無効にすることができます。警告に ID を割り当てるには、warning2 つの文字列引数で を呼び出すだけです。最初の引数は識別文字列で、2 番目の引数は実際の警告です。警告 ID は の形式であることに注意してください"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 の警告システムの動作を制御します。
最初の呼び出し形式では、テンプレートtemplateとオプションの追加引数を使用して、ストリームにメッセージを表示します。メッセージは、関数ファミリーstderrと同じルールを使用してフォーマットされ( 「フォーマットされた出力」を参照)、文字列 ' がプレフィックスとして付加されます。printf警告: ' 。この関数は、異常な状態をユーザーに通知したいが、プログラムを続行することが妥当な場合にのみ使用する必要があります。例:
警告 ("foo: おそらく何かが間違っている");
警告メッセージが改行文字で終わらない場合、Octave は警告の原因となったすべての関数呼び出しのトレースバックを出力します。警告メッセージが改行文字で終わる場合、Octave は制御をトップレベルに戻すときにトレースバック メッセージを抑制します。詳細と例については、を参照してくださいerror。
オプションの警告識別子id を使用すると、この識別子でタグ付けされた警告を有効または無効にすることができます。メッセージ識別子は、形式の文字列です"NAMESPACE:WARNING-NAME"。Octave 独自の警告は、 "Octave"名前空間を使用します (を参照warning_ids)。例:
warning ("MyNameSpace:check-something",
"foo: maybe something wrong here");
2 番目の呼び出し形式は、警告の状態を変更したり、照会したりすることを目的としています。最初の入力引数は文字列の状態( "on"、、、 または) で、その後にオプションの警告識別子idまたは(デフォルト) が続く必要があります。 "off""error""query""all"
オプションの出力引数warning_struct"state"は、フィールドとを持つ構造体または構造体配列です"identifier"。state引数 には次の値を指定できます。
"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。
警告システムの詳細レベルは、次の 2 つのモードで制御することもできます。
"backtrace":
警告メッセージの後のスタックトレースの表示を有効/無効にする
"verbose":
警告メッセージの後に追加情報を表示するかどうかを有効/無効にする
この場合、状態"on"引数は またはのみ になります"off"。
実装上の注意: MATLABとの互換性のため、 入力引数が 2 つ以上ある限り、テンプレートが一重引用符で定義されているかどうかに関係なく、テンプレート内のエスケープ シーケンス(例: => 改行) は処理されます。エスケープ シーケンスの展開を無効にするには、シーケンスの前に 2 番目のバックスラッシュを使用するか (例: )、 関数を使用します。 "\n""\\n"regexptranslate
See also: warning_ids, lastwarn, error.
: [msg, msgid] = lastwarn ()
: lastwarn (msg)
: lastwarn (msg, msgid)
最後の警告メッセージを照会または設定します。
入力引数なしで呼び出されると、最後の警告メッセージとメッセージ識別子を返します。
引数を 1 つ指定すると、最後の警告メッセージがmsgに設定されます。
引数が 2 つある場合は、最後のメッセージ識別子もmsgidに設定します。
See also: warning, lasterror, lasterr.
Octave とともに配布される関数は、次のいずれかの警告を発行する可能性があります。
Octave:abbreviated-property-match
警告が有効になっている場合Octave:abbreviated-property-match、オブジェクト プロパティを指定する操作に不正確な一致またはあいまいな一致が使用されていると、警告が出力されます。たとえば、プロパティ を持つグラフィックス オブジェクトfig'displayname'の場合、 警告が有効になっていると警告が発生します 。デフォルトでは、警告は有効になっています。 get (fig, 'dis')Octave:abbreviated-property-matchOctave: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 は、if、while、または until ステートメントで 1x1 より大きいサイズの配列が真理値として使用されたときに警告を発します。デフォルトでは、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) ...
その代わり
whileor文の条件内に代入を含むコードを記述すると便利な場合があります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、関数ファイルへの相対パスで autoload() 関数呼び出しを解析するときに Octave は警告を発します。これは通常、PKG_ADD ファイルで autoload() 呼び出しを使用するときに、PKG_ADD ファイルが autoload() コマンドによって参照される .oct ファイルと同じディレクトリにない場合に発生します。デフォルトでは、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)Octave:classdef-to-struct
Octave:colon-complex-argument
警告が有効になっている場合Octave:colon-complex-argument、コロン演算子の 3 つの引数 (base、increment、limit) のいずれかが複素数値である場合に警告が発行されます。たとえば、1:3*i警告が発行されます。デフォルトでは、Octave:colon-complex-argument警告は有効になっています。
Octave:colon-nonscalar-argument
警告が有効になっている場合Octave:colon-nonscalar-argument、コロン演算子の 3 つの引数 (base、increment、limit) のいずれかがスカラーでない場合に警告が発行されます。たとえば、1:[3, 5]警告が発行されます。デフォルトでは、Octave:colon-nonscalar-argument警告は有効になっています。
Octave:data-file-in-path
警告が有効になっている場合、Octave がやOctave:data-file-in-pathなどのファイル操作のターゲットを 直接見つけることができず、Octave のファイル検索でファイルを見つけることができる場合に警告が発行されます。警告は、プログラマが意図したものとは異なるファイル ターゲットが使用されていることを示している可能性があります。デフォルトでは、警告は有効になっています。 loadfopenpathOctave: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、入力パターンが文字列または文字列のセル配列ではなく文字配列である場合、消去関数は警告を発行します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:Infwhile (1)Octave:infinite-loop
Octave:language-extension
Octave言語に固有の機能を使用するときに警告を出力します。その機能はMATLABにはまだ存在しない可能性があります。デフォルトではOctave:language-extension警告は無効になっています。- 伝統的または--脳死Octave の起動オプションも役立つ場合があります。コマンドライン オプションを参照してください。
Octave:legacy-function
警告が有効になっている場合、 MATLAB がOctave:legacy-function使用を避けるよう提案した関数に Octave が遭遇すると警告が発行されます。関数は将来のある時点で廃止され、削除される可能性があります。その場合、警告は に変わり 、関数は削除されるまで Octave のさらに 2 つのバージョンまで存在し続けます。デフォルトでは、警告は有効になっています。 Octave:deprecated-functionOctave:legacy-function
Octave:logical-conversion
警告が有効になっている場合Octave:logical-conversion、配列の数値からブール値への暗黙的な変換が発生し、配列内のいずれかの要素が 0 または 1 と等しくない場合に警告が出力されます。デフォルトでは、Octave:logical-conversion警告は有効になっています。
Octave:lu:sparse_input
警告が有効になっている場合Octave:lu:sparse_input、Octave は、lu 関数がスパース入力と 4 つ未満の出力引数で呼び出されたときに警告を発します。この場合、スパース性を維持する列の順列化は実行されず、結果が不正確になる可能性があります。デフォルトでは、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、次のような式に対して警告を表示します。
目 (-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
(イ)
⇒ 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 ]
⇒「フー」
警告が有効になっている場合は警告を発しますOctave:num-to-str。デフォルトでは、Octave:num-to-str警告は有効になっています。
Octave:possible-matlab-short-circuit-operator
警告が有効になっている場合Octave:possible-matlab-short-circuit-operator、Octave は、短絡しない演算子&とor条件|内を使用することについて警告します 。通常、短絡することはありませんが、条件内で使用すると短絡します。デフォルトでは、警告は有効になっています。 ifwhileOctave: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 を動作不能にするような方法で使用されているOctave:remove-init-dirときに Octave は警告を発します。デフォルトでは、警告は有効になっています。 pathOctave:remove-init-dir
Octave:reload-forces-clear
同じファイルから複数の関数がロードされている場合、Octave は、関数のいずれかを再ロードする前に、すべての関数をクリアする必要があります。警告が有効になっている場合、これが発生すると Octave は警告を発し、強制的にクリアされる追加の関数のリストを出力します Octave:reload-forces-clear。デフォルトでは、警告は有効になっています。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、Octave インタープリタが有効として解析したが、Octave がまだ機能を実装していないMATLABOctave:unimplemented-matlab-functionalityコード構造が使用されたときに警告が出力されます。デフォルトでは、警告は有効になっています。
Octave:variable-switch-label
警告が有効になっている場合Octave:variable-switch-label、スイッチ ラベルが定数または定数式でない場合に Octave は警告を出力します。デフォルトでは、Octave:variable-switch-label警告は無効になっています。