lasterror
最新のエラー メッセージとその関連情報を出力
互換性
メモ
lasterror
は推奨されません。代わりに MException
を使用してください。詳細については、互換性についての考慮事項を参照してください。
構文
s = lasterror
s = lasterror(err)
s = lasterror('reset')
説明
s = lasterror
は、MATLAB® が発行する最新のエラー情報をもつ構造体 s
を返します。返される構造体は、以下のフィールドを含みます。
フィールド名 | 説明 |
---|---|
| エラー メッセージのテキストを含む文字配列。 |
| エラーの識別子を含む文字配列。MATLAB が発行する最新のエラーがエラー識別子をもたない場合、 |
| エラーの場所情報をもつ構造体。この構造体は、 |
メモ
lasterror
によって返される構造体は、以降の MATLAB のバージョンで追加のフィールドを含む可能性があります。
stack
に返される構造体のフィールドは、以下のようになります。
フィールド名 | 説明 |
---|---|
| エラーを生成した関数のファイル名。このフィールドは、ファイルがない場合は、空の文字ベクトルです。 |
| エラーが起こった関数の名前。これがファイルのプライマリ関数であり、関数名がファイル名と異なる場合、 |
| エラーが起こったファイルの行番号。 |
エラー識別子の詳細については、MException
を参照してください。
s = lasterror(err)
は、最新のエラー情報を構造体 err
の中で指定されたエラー メッセージと識別子に設定します。設定後、関数 lasterror
を呼び出すと、この新しいエラー情報を返します。オプションの戻り構造体 s
は、前回のエラーに関する情報を含んでいます。
s = lasterror('reset')
は、最新のエラー情報を既定の状態に設定します。この状態では、返される構造体の message
と identifier
フィールドは空の文字ベクトルになり、stack
フィールドは 0 行 1 列の構造体になります。
例
例 1
以下の MATLAB コードを average.m
というファイルに保存します。
function y = average(x) % AVERAGE Mean of vector elements. % AVERAGE(X), where X is a vector, is the mean of vector elements. % Nonvector input results in an error. check_inputs(x) y = sum(x)/length(x); % The actual computation function check_inputs(x) [m,n] = size(x); if (~((m == 1) || (n == 1)) || (m == 1 && n == 1)) error('AVG:NotAVector', 'Input must be a vector.') end
関数を実行します。この関数はベクトル入力を必要としますが、エラーを起こすために、スカラー値を渡します。エラーは、サブルーチン check_inputs
で起こります。
average(200) Error using average>check_inputs (line 11) Input must be a vector. Error in average (line 5) check_inputs(x)
関数 lasterror
から 3 つのフィールドを取得します。
err = lasterror err = message: [1x61 char] identifier: 'AVG:NotAVector' stack: [2x1 struct]
エラー メッセージのテキストを表示します。
msg = err.message msg = Error using average>check_inputs (line 11) Input must be a vector.
stack
情報をもつフィールドを表示します。err.stack
は、実行に失敗したサブルーチン check_inputs
とその外側のプライマリ関数 average
の情報を示す 2 行 1 列の構造体です。
st1 = err.stack(1,1) st1 = file: 'd:\matlab_test\average.m' name: 'check_inputs' line: 11 st2 = err.stack(2,1) st2 = file: 'd:\matlab_test\average.m' name: 'average' line: 5
メモ
一般に、プライマリ関数の名前は、そのプライマリ関数を含むファイルと同じ名前にします。これらの名前が異なる場合、MATLAB は stack
構造体の name
フィールドにファイル名を使用します。
例 2
lasterror
は、多くの場合、try, catch
ステートメント内の関数 rethrow
と組み合わせて使用されます。以下に例を示します。
try do_something catch do_cleanup rethrow(lasterror) end
バージョン履歴
R2006a より前に導入参考
dbstack
| lastwarn
| rethrow
| assert
| error
| MException
| MException.last
| try, catch