Main Content

try/catch를 사용한 오류 처리법

프로그램에서 오류가 발생한 후에 try/catch 문을 사용하여 코드를 실행할 수 있습니다. try/catch 문은 다음과 같은 경우에 유용할 수 있습니다.

  • 다른 방식으로 오류 없이 프로그램을 마치려는 경우

  • 오류로 인한 원치 않는 부작용을 없애야 하는 경우

  • 문제가 있는 입력 파라미터나 명령이 많이 있는 경우

try/catch 문을 다음 의사코드와 비슷하게, 코드 블록으로 정렬합니다.

try
  try block...
catch
  catch block...
end
try block 내에서 오류가 발생하면 MATLAB®try 블록 내 나머지 명령을 모두 건너뛰고 catch block의 명령을 실행합니다. try block 내에서 오류가 발생하지 않을 경우 MATLAB은 catch block 전체를 건너뜁니다.

예를 들어, try/catch 문을 사용하면 오류를 발생시키지 않을 수 있습니다. n개 요소에서 나올 수 있는 k개 요소 조합의 개수를 반환하는 combinations 함수를 예로 들어 보겠습니다.

function com = combinations(n,k)
    com = factorial(n)/(factorial(k)*factorial(n-k));
end

MATLAB은 k > n일 때마다 오류를 발생시킵니다. 보유한 요소 개수 n보다 더 많은 요소 개수 k로 이루어진 집합은 생성할 수 없습니다. try/catch 문을 사용하면, 입력값의 순서에 관계없이 오류를 피하고 이 함수를 실행할 수 있습니다.

function com = robust_combine(n,k)
    try
       com = factorial(n)/(factorial(k)*factorial(n-k));
    catch
       com = factorial(k)/(factorial(n)*factorial(k-n));
    end
end
robust_combine을 사용하면 정수 순서에 무관하게 다 유효한 입력값으로 취급합니다.
C1 = robust_combine(8,4)
C2 = robust_combine(4,8)
C1 =

    70


C2 =

    70

선택적으로, catch 문 다음에 변수가 나오는 경우 오류에 대한 추가 정보를 캡처할 수 있습니다.

catch MExc
MExc는 발생한 오류에 대한 추가 정보를 포함하는 MException 클래스 객체입니다. MException 객체에 포함된 정보에 액세스하는 방법은 MATLAB 애플리케이션의 예외 처리 항목을 참조하십시오.

참고 항목

| |