Main Content

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_msgstrnew_errID にそれぞれ設定します。次に関数 lasterr を呼び出すと、新しいエラー メッセージとエラー識別子を返します。

[msgstr,errID] = lasterr('new_msgstr','new_errID') は、前回のエラー メッセージとエラー識別子を返し、これらの値を変更します。そのため、次に関数 lasterr を呼び出すと、new_msgstrnew_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

拡張機能

スレッドベースの環境
MATLAB® の backgroundPool を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool を使用してコードを高速化します。

バージョン履歴

R2006a より前に導入

すべて折りたたむ

R2007b: lasterr は非推奨

MathWorks® は、MATLAB エラーの取り扱いを MException クラスに基づくオブジェクト指向のスキームに徐々に移行します。関数 lasterr のサポートは継続する予定ですが、MException の静的な MException.last メソッドを使用することを推奨します。

警告

関数 lasterr と関数 MException.last は常に同じ結果を返すという保証はありません。たとえば、関数 MException.last は検出されなかったエラーについてのみエラー ステータスを更新しますが、関数 lasterr は検出されていたかどうかにかかわらず、すべてのエラーのエラー ステータスを更新します。