Main Content

MATLAB 애플리케이션의 예외 처리

개요

작성한 프로그램을 아무리 주의 깊게 계획하고 테스트하더라도, 조건을 다르게 하여 실행하면 프로그램이 예상대로 원활히 실행되지 않을 수 있습니다. 항상 프로그램에 오류 검사 기능을 포함시켜 모든 조건에서 안정적으로 동작하도록 하는 것이 좋습니다.

MATLAB®에서는 작성한 프로그램이 서로 다른 유형의 오류에 대응하는 방식을 결정할 수 있습니다. 사용자에게 추가 입력을 요청하거나, 확장 오류 또는 경고 정보를 표시하거나, 디폴트 값을 사용하여 계산을 반복할 수도 있습니다. MATLAB의 오류 처리 기능은 프로그램이 특정 오류 조건이 있는지 확인하고 상황에 따라 적절한 코드를 실행할 수 있게 도와줍니다.

MATLAB은 실행 중인 명령이나 프로그램에서 심각한 결함을 발견할 경우, 오류 발생 시점의 동작에 대한 정보를 수집하고, 무엇이 잘못되었는지 사용자가 이해할 수 있게 돕는 메시지를 표시하며, 명령이나 프로그램을 종료합니다. 이를 예외 발생이라고 합니다. MATLAB 명령 프롬프트에 명령을 입력하는 중이나 프로그램 코드를 실행하는 중에 예외가 발생할 수 있습니다.

명령줄에서 발생하는 예외

MATLAB 프롬프트에서 예외가 발생할 경우, 아래 설명된 대로 예외를 처리하는 방법에 대한 여러 가지 옵션이 있습니다.

오류 메시지로부터 결함 파악하기

MATLAB에 표시된 오류 메시지를 검토하십시오. 대부분의 오류 메시지는 최소한 프로그램 실패의 직접적인 원인을 설명하려고 합니다. 이는 종종 문제의 원인, 그리고 해결을 위해 해야 할 작업을 파악할 수 있을만한 정보가 됩니다.

오류가 발생한 코드 검토하기

오류가 발생한 함수가 MATLAB 프로그램 파일로 구현된 경우, 오류 메시지에는 다음과 유사한 형태의 라인이 있을 것입니다.

surf

Error using surf (line 49)
Not enough input arguments.

이 텍스트에는 오류가 발생한 함수의 이름(이 경우에는 surf)이 포함되어 있으며, 이 함수의 프로그램 파일 내에서 오류가 발생한 라인 번호를 표시합니다. 라인 번호를 클릭하면 MATLAB에서 파일이 열리고 파일에서 오류가 발생한 위치에 커서가 놓입니다. 이 라인과 그 앞에 나오는 코드를 검토하여 오류의 원인을 파악할 수 있습니다.

디버거에서 코드 순차적 실행하기

MATLAB 디버거를 사용하여 오류가 발생한 코드를 순차적으로 실행할 수 있습니다. 밑줄이 표시된 오류 텍스트를 클릭하면 MATLAB 편집기에서 파일이 열리고 오류 발생 지점 또는 그 근처 위치가 표시됩니다. 그런 다음 해당 라인의 시작 부분에 있는 하이픈을 클릭하여 이 위치에 중단점을 설정합니다. 프로그램을 다시 실행하면 MATLAB이 중단점에서 실행을 일시 중지하므로, 프로그램 코드를 순차적으로 실행할 수 있습니다. 명령 dbstop on error도 또한 오류가 발생한 지점을 찾는 데 유용합니다.

자세한 내용은 MATLAB 코드 파일 디버그하기에 대한 문서를 참조하십시오.

프로그램 코드에서 발생하는 예외

프로그램 파일에서 프로그램을 작성할 때 예외를 포착한 다음 프로그램이 종료되도록 하는 대신 예외를 처리하거나 해결하려고 시도할 수 있습니다. 예외를 포착하면 일반적인 종료 프로세스를 중단하고 오류 상황을 처리하는 코드 블록으로 진입합니다. 이 코드 블록을 catch 블록이라고 합니다.

Catch 블록에서는 다음과 같은 작업을 수행할 수 있습니다.

  • 오류에 대해 캡처된 정보를 검토합니다.

  • 사용자에게 보고할 추가 정보를 수집합니다.

  • 현재 작업을 다른 방식으로 수행하려고 시도합니다.

  • 오류로 인해 발생한 원치 않는 부작용을 없앱니다.

Catch 블록의 끝에 도달하면 가능한 경우 프로그램을 계속 실행하거나, 혹은 종료할 수 있습니다.

MException 객체를 사용하여 프로그램의 예외에 관한 정보에 액세스합니다. 자세한 내용은 예외에 대한 대응책 항목을 참조하십시오.

새로운 예외 생성

프로그램 실패나 용인할 수 없는 결과를 야기하는 조건을 감지할 경우, 프로그램 코드는 예외를 발생시켜야 합니다. 이 절차는 다음과 같이 진행됩니다.

  • 오류 발생 당시 생겼던 문제와 실행 중이었던 코드에 대한 정보를 저장합니다.

  • 오류에 대한 기타 관련 정보를 수집합니다.

  • MATLAB이 예외를 발생시키도록 지시합니다.

MException 객체를 사용하여 오류에 관한 정보를 캡처합니다. 자세한 내용은 예외 발생시키기 항목을 참조하십시오.