Main Content

error

エラーのスローとメッセージの表示

説明

error(msg) はエラーをスローし、エラー メッセージを表示します。

error(msg,A) は、MATLAB® 関数 sprintf で使用されるような書式変換文字を含むエラー メッセージを表示します。msg 内の個々の変換文字は、値 A の 1 つに変換されます。

error(errID,___) は、例外発生時のエラー識別子を含みます。識別子により、エラーを区別し、MATLAB でエラーが発生したときの動作を制御することができます。前述の構文のいずれかの入力引数を含めることができます。

error(errorStruct) は、スカラー構造体のフィールドを使用してエラーをスローします。

error(correction,___) は、例外の修正候補を提供します。前述の構文のいずれかの入力引数を含めることができます。

すべて折りたたむ

msg = 'Error occurred.';
error(msg)
Error occurred.

改行を含む書式付きエラー メッセージをスローします。エラー メッセージ内の特殊文字 (\n など) を MATLAB で変換する場合、error に複数の入力引数を指定しなければなりません。エラー メッセージに、変数 n のクラスに関する情報を含めます。

n = 7;
if ~ischar(n)
   error('Error. \nInput must be a char, not a %s.',class(n))
end
Error.
Input must be a char, not a double.

error で入力引数を 1 つのみ使用した場合、MATLAB は \n を改行に変換しません。

if ~ischar(n)
   error('Error. \nInput must be a char.')
end
Error. \nInput must be a char.

識別子を含むエラーをスローします。

if ~ischar(n)
   error('MyComponent:incorrectType',...
       'Error. \nInput must be a char, not a %s.',class(n))
end
Error.
Input must be a char, not a double.

MException.last を使用して、最新のキャッチされていない例外を表示します。

exception = MException.last
exception = 

  MException with properties:

    identifier: 'MyComponent:incorrectType'
       message: 'Error. 
Input must be a char, not a double.'
         cause: {0x1 cell}
         stack: [0x1 struct]

メッセージと識別子のフィールドをもつ構造体を作成します。例を単純にするために、スタック フィールドは使用しません。

errorStruct.message = 'Data file not found.';
errorStruct.identifier = 'MyFunction:fileNotFound';
errorStruct = 

       message: 'Data file not found.'
    identifier: 'MyFunction:fileNotFound'

エラーをスローします。

error(errorStruct)
Data file not found.

入力引数を 1 つ必要とする関数 hello を作成します。提案された入力引数 "world" をエラー メッセージに追加します。

function hello(audience)
if nargin < 1
    aac = matlab.lang.correction.AppendArgumentsCorrection('"world"');
    error(aac, 'MATLAB:notEnoughInputs', 'Not enough input arguments.')   
end
fprintf("Hello, %s!\n", audience)
end

引数なしで関数を呼び出します。

hello
Error using hello
Not enough input arguments.

Did you mean:
>> hello("world")

入力引数

すべて折りたたむ

エラーに関する情報。書式仕様を含むテキスト スカラーとして指定します。このメッセージは、エラー メッセージとして表示されます。メッセージの書式を設定するには、\t\n などのエスケープ シーケンスを使用します。関数 sprintf によってサポートされる %s%d などの書式指定子も使用できます。A1,...,An 入力引数を介して変換指定子の値を指定します。詳細については、テキストの書式設定を参照してください。

メモ

エラー メッセージ内の特殊文字 (\t\n%s%d など) を MATLAB で変換する場合、error に複数の入力引数を指定しなければなりません。

例: 'File not found.'

エラーの識別子。コンポーネント フィールドとニーモニック フィールドを含むテキスト スカラーとして指定します。エラー識別子を使用すると、エラー原因を特定したり、選択したエラーのサブセットをプログラム内で制御することができます。

エラー識別子には 1 つ以上の "コンポーネント" フィールドと 1 つの "ニーモニック" フィールドが含まれます。フィールドはコロンで区切られなければなりません。たとえば、コンポーネント フィールド component およびニーモニック フィールド mnemonic をもつエラー識別子は 'component:mnemonic' として指定します。コンポーネント フィールドとニーモニック フィールドはそれぞれ、文字で始まらなければなりません。残りの文字には英数字 (A ~ Z、a ~ z、0 ~ 9) とアンダースコアを使用できます。errID に空白文字を含めることはできません。詳細については、MException を参照してください。

例: 'MATLAB:singularMatrix'

例: 'MATLAB:narginchk:notEnoughInputs'

msg 内の変換指定子と置き換える値。文字ベクトル、string スカラー、または数値スカラーとして指定します。

エラーが報告する情報。スカラー構造体として指定します。この構造体は、少なくとも次のフィールドのいずれかを含まなければなりません。

message

エラー メッセージ。詳細については、msg を参照してください。

identifier

エラー識別子。詳細については、errID を参照してください。

stack

エラーのスタック フィールド。errorStructstack フィールドが含まれる場合、error はそのフィールドを使用してエラーのスタック フィールドを設定します。stack を指定する際は、絶対ファイル名と、スタック フレームで関数を入れ子にする関数の全体のシーケンスを使用します。この文字ベクトルは、dbstack('-completenames') で返されるものと同じです。

ヒント

  • エラーをスローすると、MATLAB がそのエラーの情報を取得し、MException クラスのオブジェクトであるデータ構造に格納します。この例外オブジェクト内の情報には try/catch を使用してアクセスできます。また、例外によりプログラムが終了し、制御をコマンド プロンプトに返した場合は、MException.last を使用できます。

  • try ブロック内でエラーが発生しても、MATLAB はプログラムの実行を停止しません。この場合、MATLAB は制御を catch ブロックに渡します。

  • error へのすべての入力が空である場合、MATLAB はエラーをスローしません。

拡張機能

バージョン履歴

R2006a より前に導入