C++에서 예외 처리를 하는 방법에 대해 알아보겠습니다.
프로그램에서 예외란 문법적인 오류가 아닌 처리가 동작을 하며 의도하지 않은 방향으로 흘러가 시스템이 멈추는 오류를 뜻합니다.
소스를 작성할 때 어느 정도 동작을 예상하고 테스트를 하며 만듭니다.
하지만 예상하지 못한 동작을 해 생각하지 못한 값이 들어오는 경우 다른 결과를 내기도 하지만, 결과조차 내지 못하고 시스템이 멈추는 경우가 생겨버립니다.
시스템이 멈춰버리거나 갑자기 종료가 된다면 사용자는 오류가 있어서 시스템이 종료가 된 건지 정상적으로 끝난 것인지 알 수 없습니다.
예상치 못한 오류가 발생해 시스템이 멈추거나 종료되는 거 보다는 오류가 발생했다가 알려주는 것이 중요합니다.
예외가 발생한 경우 처리를 할 수 있게 준비되어 있는 문법이 try catch입니다.
try catch
try catch의 작성 방법을 보겠습니다.
// 예외 발생하는 영역
try {
// 처리 작성 부분
...;
// 예외가 발생하면 예외를 던지는 영역
throw 예외 객체 ;
// 처리 작성 부분
...;
// 던져진 예외가 있는 경우 처리 영역
} catch(예외 객체) {
// 예외 처리 부분
}
try – try 블록 내부에 예외가 있는지 감시
throw – try에서 예외를 감시하면 throw에서 catch로 인자를 전달
catch – throw에서 던진 변수를 인자로 받아서 catch 블록 내부에 작성한 예외처리 실행
샘플 소스를 보면서 try catch에 사용 방법을 보겠습니다.
#include <iostream>
using namespace std;
int main()
{
int a = 9;
int b = 0;
int rs;
rs = a/b;
printf("결과 : %d\n", rs);
}
예제 소스에서는 9를 0으로 나누고 있습니다.
0으로 숫자를 나누려고 하면 에러가 발생합니다.
이러한 경우 대부분 시스템 에러가 표시가 됩니다.
만약 0이 들어오는 경우 try catch를 사용해 예외 처리를 하는 방법을 보겠습니다.
#include <iostream>
using namespace std;
int main() {
int a = 9;
int b = 0;
int rs;
// try 블록 내부에 예외가 있는지 감시
try {
if (b == 0) {
// try에서 예외를 감시하면 throw에서 catch로 인자를 전달
throw string("0으로는 나누기를 할 수 없습니다.");
}
rs = a/b;
printf("결과 : %d\n", rs);
// throw에서 던진 인자로 받아서 예외처리
} catch (string error) {
cout << error << endl;
}
return 0;
}
결과
0으로는 나누기를 할 수 없습니다.
변수 b인 나눌 값이 0인 경우에는 throw로 catch로 던집니다.
catch에서는 호출될 경우 어떤 처리를 할 것인지 작성해둡니다.
throw 던진 문자열을 출력하고 있습니다.
변수 b에 0이 아닌 다른 값을 넣어서 실행을 해보겠습니다.
#include <iostream>
using namespace std;
int main() {
int a = 9;
int b = 2;
int rs;
// try 블록 내부에 예외가 있는지 감시
try {
if (b == 0) {
// try에서 예외를 감시하면 throw에서 catch로 인자를 전달
throw string("0으로는 나누기를 할 수 없습니다.");
}
rs = a/b;
printf("결과 : %d\n", rs);
// throw에서 던진 인자로 받아서 예외처리
} catch (string error) {
cout << error << endl;
}
return 0;
}
결과
결과 : 4
변수 b에 나누기를 할 수 있는 0이 아닌 값을 지정했습니다.
0이 아닌 값이 들어왔기 때문에 throw로 들어가지 않고 나누기 계산을 했습니다.
그 결과값을 출력하였습니다.
catch문은 printf에 작성되어 있지만 실행되지 않습니다.
catch는 throw에서 호출한 경우에만 실행되기 때문입니다.
이것으로 예외 처리임 tyr catch 사용 방법을 마치겠습니다.
댓글