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