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