Main Content

assert

조건이 false인 경우 오류 발생시키기(Throw Error)

설명

예제

assert(cond)cond가 false인 경우 오류를 발생시킵니다.

예제

assert(cond,msg)cond가 false인 경우 오류를 발생시키고 오류 메시지 msg를 표시합니다.

assert(cond,msg,A)cond가 false인 경우 MATLAB® sprintf 함수에 사용되는 것과 같은 형식 변환 문자를 포함하는 오류 메시지를 표시합니다. msg의 각 변환 문자는 값 A 중 하나로 변환됩니다.

예제

assert(cond,errID,msg)cond가 false인 경우 오류를 발생시키고 오류 메시지 msg를 표시하며 예외에 대한 오류 ID를 포함합니다. 이 ID를 통해 오류를 구별하고 MATLAB에서 오류가 발생할 때 수행할 동작을 제어할 수 있습니다.

assert(cond,errID,msg,A)는 예외에 대한 오류 ID를 포함하고 서식이 지정된 오류 메시지를 표시합니다.

예제

모두 축소

x가 지정된 최솟값보다 큰지 어설션합니다.

minVal = 7;
x = 26;

assert(minVal < x)

이 표현식은 true로 평가되며, 어설션이 통과합니다.

x의 값이 지정된 최솟값과 최댓값 사이에 있는지 어설션합니다.

maxVal = 13;

assert((minVal < x) && (x < maxVal))
Error using assert
Assertion failed.

이 표현식은 false로 평가됩니다. 어설션이 실패하고 MATLAB에서 오류가 발생합니다.

두 숫자의 곱이 배정밀도 숫자인지 어설션합니다.

a = 13;
b = single(42);
c = a*b;

assert(isa(c,'double'),'Product is not type double.')
Error using assert
Product is not type double.

c의 데이터형을 표시하도록 오류 메시지를 보강합니다.

assert(isa(c,'double'),'Product is type %s, not double.',class(c))
Error using assert
Product is type single, not double.

assert 함수를 사용하여 정상적인 코드 실행에서 발생해서는 안 되는 조건을 테스트할 수 있습니다. 계수가 숫자형인 경우 계산된 근도 숫자형이어야 합니다. 지정된 계수와 계산된 근을 사용한 2차 방정식은 0이 되어야 합니다.

function x = quadraticSolver(C)

validateattributes(C,{'numeric'},{'size',[1 3]})

a = C(1);
b = C(2);
c = C(3);

x(1) = (-b+sqrt(b^2-4*a*c))/(2*a);
x(2) = (-b-sqrt(b^2-4*a*c))/(2*a);
assert(isnumeric(x),'quadraticSolver:nonnumericRoots',...
    'Computed roots are not numeric')

y1 = a*x(1)^2+b*x(1)+c;
y2 = a*x(2)^2+b*x(2)+c;
assert(y1 == 0,'quadraticSolver:root1Error','Error in first root')
assert(isequal(y2,0),'quadraticSolver:root2Error','Error in second root')

end

입력 인수

모두 축소

어설션할 조건으로, 유효한 MATLAB 표현식으로 지정됩니다. 이 표현식은 논리형이거나 논리형으로 변환될 수 있어야 합니다. cond가 false이면 assert 함수에서 오류가 발생합니다. cond는 관계 연산자(예: < 또는 ==)와 논리 연산자(예: &&, || 또는 ~)를 포함할 수 있습니다. 논리 연산자 andor를 사용하여 복합 표현식을 생성합니다. MATLAB은 연산자 우선 순위 규칙에 따라 복합 표현식을 왼쪽에서 오른쪽으로 평가합니다.

예: a<0

예: exist('myfunction.m','file')

어설션 실패에 대한 정보로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. 이 메시지는 오류 메시지로 표시됩니다. 메시지의 형식을 지정하려면 \t, \n 등의 이스케이프 시퀀스를 사용하십시오. sprintf 함수가 지원하는 형식 지정자(예: %s 또는 %d)를 사용할 수도 있습니다. A1,...,An 입력 인수를 통해 변환 지정자의 값을 지정합니다. 자세한 내용은 텍스트 형식 지정하기 항목을 참조하십시오.

참고

MATLAB에서 오류 메시지에 포함된 특수 문자(예: \t, \n, %s, %d)를 변환하도록 하려면 assert에 두 개 이상의 입력 인수를 지정해야 합니다.

예: 'Assertion condition failed.'

msg의 변환 지정자를 대체하는 값으로, 문자형 벡터, string형 스칼라 또는 숫자형 스칼라로 지정됩니다.

어설션 실패 식별자로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. ID를 사용하여, 오류의 원인을 보다 효율적으로 식별하거나 프로그램에서 발생하는 오류 중에서 선택된 일부를 제어할 수 있습니다.

오류 ID는 하나 이상의 컴포넌트 필드와 하나의 니모닉 필드를 포함합니다. 필드는 콜론으로 구분되어야 합니다. 예를 들어, 컴포넌트 필드 component와 니모닉 필드 mnemonic을 갖는 오류 ID는 'component:mnemonic'으로 지정됩니다. 컴포넌트 필드와 니모닉 필드는 각각 영문자로 시작해야 합니다. 나머지 문자는 영숫자(A–Z, a–z, 0–9)나 밑줄일 수 있습니다. errID는 공백 문자를 포함할 수 없습니다. 자세한 내용은 MException을 참조하십시오.

예: 'MATLAB:singularMatrix'

예: 'MATLAB:narginchk:notEnoughInputs'

  • 오류가 발생하면 MATLAB은 이 오류에 대한 정보를 캡처한 후 MException 클래스의 객체인 데이터 구조에 저장합니다. try/catch를 사용하여 예외 객체의 정보에 액세스할 수 있습니다. 또는 예외로 인해 프로그램이 종료되고 명령 프롬프트 제어로 돌아가는 경우 MException.last를 사용할 수 있습니다.

  • try 블록 내에서 어설션 실패가 발생할 경우 MATLAB은 프로그램 실행을 중단하지 않습니다. 이 경우 MATLAB은 catch 블록으로 제어를 전달합니다.

확장 기능

버전 내역

R2007a에 개발됨

모두 확장

참고 항목

|