경고와 오류 발생시키기
경고 발생시키기
프로그램 실행 시 감지된 예기치 않은 조건을 표시하는 목적으로 경고를 발생시킬 수 있습니다. warning
함수는 명령줄에 경고 메시지를 출력합니다. 경고는 다음 두 가지 유의미한 측면에서 오류와는 달리 구분됩니다.
경고는 프로그램 실행을 중지하지 않습니다.
도움이 되지 않는 MATLAB® 경고를 표시하지 않을 수 있습니다.
실행 중 경고 메시지를 생성하려면 코드에 warning
함수를 사용하십시오. 다음과 같이 warning
함수에 대한 입력 인수로 메시지를 지정하십시오.
warning('Input must be text')
예를 들어, 소프트웨어 버전을 확인하는 경고를 코드에 삽입할 수 있습니다.
function warningExample1 if ~strncmp(version, '7', 1) warning('You are using a version other than v7') end
오류 발생시키기
프로그램 내의 치명적인 문제를 표시하는 목적으로 오류를 발생시킬 수 있습니다. error
함수를 사용하여 명령줄에 오류 메시지를 출력합니다. 메시지를 표시한 후, MATLAB은 현재 프로그램의 실행을 중지합니다.
예를 들어, n
개 요소에서 나올 수 있는 k
개 요소 조합의 개수를 반환하는 함수를 생성한다고 가정하겠습니다. 이러한 함수는 k > n
인 경우에는 성립할 수 없습니다. 예로, 4개의 요소 중에서 8개의 요소를 선택할 수 없기 때문입니다. combinations
를 사용하는 사람이 문제를 알 수 있도록 이 사실을 함수에 포함시켜야 합니다.
function com = combinations(n,k) if k > n error('Cannot calculate with given values') end com = factorial(n)/(factorial(k)*factorial(n-k)); end
combinations
함수가 유효하지 않은 입력값을 받을 경우 MATLAB은 오류 메시지를 발생시킨 후에 바로 실행을 중지합니다.
combinations(4,8)
Error using combinations (line 3) Cannot calculate with given values
경고와 오류에 런타임 파라미터 추가하기
경고 또는 오류 메시지를 보다 구체적으로 표시하려면 실행할 때 메시지의 구성요소를 삽입하십시오. warning
함수는 sprintf
함수에서 사용하는 것과 동일한 변환 문자를 사용합니다. 변환 문자는 코드가 실행될 때까지 알 수 없는 부분문자열이나 값에 대한 자리 표시자 역할을 합니다.
예를 들어, 다음 경고는 %s
와 %d
를 사용하여 변수 arrayname
과 arraydims
의 값을 삽입할 위치를 표시합니다.
warning('Array %s has %d dimensions.',arrayname,arraydims)
arrayname = 'A'
와 arraydims = 3
을 지정하여 이 명령을 실행하면 MATLAB은 다음을 반환합니다.Warning: Array A has 3 dimensions.
경고와 오류에 런타임 파라미터를 추가하면 프로그램 내의 문제를 명확히 나타낼 수 있습니다. 오류 발생시키기에 나와 있는 함수 combinations
를 예로 들어 보겠습니다. 다음과 같이 런타임 파라미터를 사용하여 훨씬 더 많은 정보를 제공하는 오류를 발생시킬 수 있습니다.
function com = combinations(n,k) if k > n error('Cannot choose %i from %i elements',k,n) end com = factorial(n)/(factorial(k)*factorial(n-k)); end
combinations(6,9)
Error using combinations (line 3) Cannot choose 9 from 6 elements
경고와 오류에 식별자 추가하기
식별자를 사용하면 경고나 오류를 고유하게 참조할 수 있습니다.
식별자를 사용하여 경고를 활성화하거나 비활성화할 수 있습니다. 다음과 같이 warning
함수에 식별 텍스트 인수를 사용하여 메시지에 고유한 태그를 추가합니다.
warning(identifier_text,message_text)
예를 들어 앞에 나온, 실행 중인 소프트웨어 버전에 대한 MATLAB 경고에 식별자 태그를 추가할 수 있습니다.
minver = '7'; if ~strncmp(version,minver,1) warning('MYTEST:VERCHK','Running a version other than v%s',minver) end
오류 메시지에 ID를 추가하면 부정 테스트(Negative Test)를 수행할 수 있습니다. 그러나, 더 많은 정보를 추가하거나 오류로부터 정보를 복구하려면 MException
객체를 사용해야 하는 경우가 종종 있습니다.
참고 항목
warning
| lastwarn
| warndlg
| MException