lasterror
가장 최근의 오류 메시지와 관련 정보
lasterror는 권장되지 않습니다. MException을 대신 사용하십시오. 자세한 내용은 버전 내역 항목을 참조하십시오.
구문
s = lasterror
s = lasterror(err)
s = lasterror('reset')
설명
s = lasterror는 MATLAB®에서 가장 최근에 발생한 오류에 대한 정보가 포함된 구조체 s를 반환합니다. 반환되는 구조체에는 다음 필드가 포함되어 있습니다.
| 필드 이름 | 설명 |
|---|---|
| 오류 메시지의 텍스트가 포함된 문자형 배열입니다. |
| 오류 ID가 포함된 문자형 배열입니다. MATLAB에서 가장 최근에 발생한 오류에 오류 ID가 없는 경우 |
| 오류의 위치에 대한 정보를 제공하는 구조체입니다. 이 구조체에는 |
참고
MATLAB의 향후 버전에서는 lasterror에서 반환되는 구조체에 필드가 추가로 포함될 수 있습니다.
stack에서 반환된 구조체의 필드는 다음과 같습니다.
| 필드 이름 | 설명 |
|---|---|
| 오류가 발생한 함수가 표시되는 파일의 이름입니다. 파일이 없는 경우 이 필드는 빈 문자형 벡터입니다. |
| 오류가 발생한 함수의 이름입니다. 이 함수가 파일의 주 함수이고 함수 이름이 파일 이름과 다르면 |
| 오류가 발생한 파일의 라인 번호입니다. |
오류 ID에 대한 자세한 내용은 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에서 세 개의 필드를 가져옵니다.
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