Main Content

警告とエラーの表示

警告の表示

警告を表示してプログラムの実行時に検知された予期せぬ状態を知らせることができます。関数 warning は、警告メッセージをコマンド ラインに出力します。警告とエラーは、2 つの点で大きく異なります。

  • 警告によってプログラムの実行が停止されることはありません。

  • 不要な MATLAB® 警告を非表示にできます。

コードに関数 warning を使用することで、実行中に警告メッセージを生成できます。メッセージを関数 warning への入力引数として指定します。

warning('Input must be text')

たとえば、警告をコードに挿入してソフトウェアのバージョンを確認できます。

function warningExample1
  if ~strncmp(version, '7', 1)
    warning('You are using a version other than v7')
  end

エラーのスロー

エラーをスローしてプログラム内の致命的な問題を知らせることができます。関数 error を使って、エラー メッセージをコマンド ラインに出力します。メッセージの表示後、MATLAB は現在のプログラムの実行を停止します。

たとえば、n 個の要素の中から k 個の要素の組み合わせの数を返す関数を作成するとします。このような関数は k > n となると無意味です。4 つの要素から 8 つは選択できません。この事実を関数に組み込み、combinations を使用する人にこの問題を知らせなければなりません。

function com = combinations(n,k)
    if k > n
        error('Cannot calculate with given values')
    end
    com = factorial(n)/(factorial(k)*factorial(n-k));
end

関数 combinations が無効な入力を受け取ると、MATLAB はエラー メッセージをスローした後、すぐに実行を停止します。

combinations(4,8)
Error using combinations (line 3)
Cannot calculate with given values

警告およびエラーへの実行時パラメーターの追加

警告またはエラー メッセージで詳細を特定できるように、実行時にメッセージのコンポーネントを挿入します。関数 warning は、関数 sprintf が使用するのと同じ "変換文字" を使用します。変換文字は、コードが実行されるまで不明な部分文字列または値のプレースホルダーとして動作します。

たとえば、この警告は %s%d を使って変数 arrayname および arraydims の値を挿入する場所をマークします。

warning('Array %s has %d dimensions.',arrayname,arraydims)
このコマンドを arrayname = 'A' および arraydims = 3 で実行すると、MATLAB は次のように応答します。
Warning: Array A has 3 dimensions.

実行時パラメーターを警告とエラーに追加することにより、プログラム内の問題が明確になります。エラーのスローの説明にあった関数 combinations を考えてみましょう。実行時パラメーターを使用して、より情報度の高いエラーをスローできます。

function com = combinations(n,k)
    if k > n
        error('Cannot choose %i from %i elements',k,n)
    end
    com = factorial(n)/(factorial(k)*factorial(n-k));
end
この関数が無効な引数を受け取ると、MATLAB はエラー メッセージをスローしてプログラムを停止します。
combinations(6,9)
Error using combinations (line 3)
Cannot choose 9 from 6 elements

警告およびエラーへの識別子の追加

識別子は、警告またはエラーを一意に参照する方法を提供します。

識別子で警告を有効または無効にします。関数 warning でテキストを識別する引数を使用して、メッセージに一意のタグを付けます。

warning(identifier_text,message_text)

たとえば、実行中のソフトウェアのバージョンについての前出の MATLAB 警告に識別子のタグを追加できます。

minver = '7';
if ~strncmp(version,minver,1)
  warning('MYTEST:VERCHK','Running a version other than v%s',minver)
end

識別子をエラー メッセージに追加すると否定的なテストを行うことができます。ただし、エラーに対する情報を追加したりエラーから回復するには、一般的には MException オブジェクトを操作することが必要になります。

参考

| | |

関連するトピック