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