lasterr
前回のエラー メッセージ
lasterr
は推奨されません。代わりに MException
を使用してください。詳細については、互換性についての考慮事項を参照してください。
構文
msgstr = lasterr
[msgstr,errID] = lasterr
lasterr('new_msgstr')
lasterr('new_msgstr','new_errID')
[msgstr,errID] = lasterr('new_msgstr','new_errID')
説明
msgstr = lasterr
は、MATLAB® が生成した前回のエラー メッセージを返します。
[msgstr,errID] = lasterr
は、msgstr
に前回のエラーを、errID
にその識別子を返します。エラーに識別子が定義されていない場合、lasterr
は、errID
に空の文字ベクトルを返します。エラー識別子の詳細については、MException
を参照してください。
lasterr('new_msgstr')
は、前回のエラー メッセージを新しい文字ベクトル new_msgstr
に設定します。そのため、関数 lasterr
を次に呼び出すと、新しいエラー メッセージが返されます。ユーザーは、前回のエラーを lasterr('')
を使用して空の文字ベクトルに設定することもできます。
lasterr('new_msgstr','new_errID')
は、前回のエラー メッセージとエラー識別子を new_msgstr
と new_errID
にそれぞれ設定します。次に関数 lasterr
を呼び出すと、新しいエラー メッセージとエラー識別子を返します。
[msgstr,errID] = lasterr('new_msgstr','new_errID')
は、前回のエラー メッセージとエラー識別子を返し、これらの値を変更します。そのため、次に関数 lasterr
を呼び出すと、new_msgstr
と new_errID
にそれぞれ指定されたメッセージと識別子が返されます。
例
例 1
次の関数は、lasterr
の文字ベクトルを調べ、最後に発生したエラー メッセージを表示します。この例は、2 つの例を挙げますが、これは行列を乗算した結果、発生するエラーです。
function matrix_multiply(A,B) try A * B catch errmsg = lasterr; if(strfind(errmsg, 'Inner matrix dimensions')) disp('** Wrong dimensions for matrix multiply') else if(strfind(errmsg, 'not defined for variables of class')) disp('** Both arguments must be double matrices') end end end
行列乗算で整合性がない行列 (たとえば、A
の列次元が B
の行次元に等しくない) 同士でこの関数を呼び出す場合、MATLAB はエラーを返し、関数 lasterr
を使用して、その原因を決めます。
A = [1 2 3; 6 7 2; 0 -1 5]; B = [9 5 6; 0 4 9]; matrix_multiply(A,B) ** Wrong dimensions for matrix multiply
例 2
error
を使用して、エラー識別子とエラー メッセージを指定します。
error('MyToolbox:angleTooLarge',... 'The angle specified must be less than 90 degrees.');
ユーザーのエラー処理コード内で、関数 lasterr
を使用し、操作の失敗に対するエラー識別子とエラー メッセージを確認します。
[errmsg,errID] = lasterr errmsg = The angle specified must be less than 90 degrees. errID = MyToolbox:angleTooLarge