C++ 학습: 예외 처리
예외 처리는 프로그램 실행 중에 발생할 수 있는 오류를 처리하는 방법입니다. 이를 통해 프로그램이 예기치 않게 종료되는 것을 방지하고, 오류를 적절히 처리할 수 있습니다. 이번 글에서는 예외의 개념, 예외 처리 블록(try, catch, throw), 그리고 표준 예외 클래스에 대해 알아보겠습니다.
1. 예외의 개념: 예외의 기본 개념
예외(exception)는 프로그램 실행 중에 발생하는 예기치 않은 상황이나 오류를 의미합니다. 예외 처리를 통해 이러한 상황을 감지하고, 프로그램이 적절히 대응하도록 할 수 있습니다. 예외 처리는 코드의 정상적인 흐름을 방해하지 않고, 오류를 안전하게 처리하는 데 중요한 역할을 합니다.
예외가 발생하는 일반적인 상황
- 잘못된 입력
- 파일을 열 수 없음
- 메모리 할당 실패
- 계산 오류(예: 0으로 나누기)
예외 처리를 사용하면 프로그램이 이러한 오류를 감지하고, 적절한 조치를 취할 수 있습니다.
2. try, catch, throw: 예외 처리 블록
C++에서는 예외 처리를 위해 try, catch, throw 키워드를 사용합니다.
- try 블록 : 예외가 발생할 가능성이 있는 코드를 감싸는 블록입니다.
- catch 블록 : try 블록에서 발생한 예외를 처리하는 블록입니다.
- throw 키워드 : 예외를 발생시키는 데 사용됩니다.
- 예외 처리 블록 예제
using namespace std;
int divide(int a, int b) {
if (b == 0) {
throw runtime_error("Division by zero"); // 예외 발생
}
return a / b;
}
int main() {
int x = 10;
int y = 0;
try {
int result = divide(x, y);
cout << "Result: " << result << endl;
} catch (const runtime_error& e) {
cout << "Caught an exception: " << e.what() << endl; // 예외 처리
}
return 0;
}
위의 예제에서 divide 함수는 두 숫자를 나누고, 분모가 0일 경우 runtime_error 예외를 발생시킵니다. main 함수에서 try 블록을 사용하여 divide 함수를 호출하고, 예외가 발생하면 catch 블록에서 이를 처리합니다.
3. 표준 예외 클래스: 표준 라이브러리의 예외 클래스
C++ 표준 라이브러리는 다양한 예외 처리를 위한 표준 예외 클래스를 제공합니다. 이러한 클래스는 <stdexcept> 헤더 파일에 정의되어 있습니다. 주요 표준 예외 클래스는 다음과 같습니다:
- std::exception : 모든 표준 예외 클래스의 기본 클래스입니다.
- std::runtime_error : 실행 중 발생하는 예외를 나타냅니다.
- std::logic_error : 논리적 오류를 나타냅니다.
- std::out_of_range : 범위를 벗어나는 접근을 나타냅니다.
- std::invalid_argument : 유효하지 않은 인수를 나타냅니다.
- 표준 예외 클래스 사용 예제
#include <stdexcept>
#include <vector>
using namespace std;
int main() {
vector<int> vec = {1, 2, 3};
try {
// 범위를 벗어난 접근
cout << vec.at(5) << endl;
} catch (const out_of_range& e) {
cout << "Caught an exception: " << e.what() << endl;
}
try {
// 유효하지 않은 인수
throw invalid_argument("Invalid argument provided");
} catch (const invalid_argument& e) {
cout << "Caught an exception: " << e.what() << endl;
}
return 0;
}
위의 예제에서 out_of_range 예외와 invalid_argument 예외를 발생시키고, 각각의 catch 블록에서 이를 처리합니다. 표준 예외 클래스는 what 멤버 함수를 통해 예외에 대한 설명을 제공합니다.
이번 글에서는 C++의 예외 처리에 대해 알아보았습니다. 예외의 기본 개념, 예외 처리 블록(try, catch, throw), 그리고 표준 예외 클래스를 이해하고 활용하면 프로그램의 안정성과 신뢰성을 높일 수 있습니다. Happy Coding!
'프로그래밍 > C++' 카테고리의 다른 글
[C++] 12. C++의 "프로젝트 및 실습(기타)" (0) | 2024.06.17 |
---|---|
[C++] 11. C++의 "고급 주제(기타)" (0) | 2024.06.17 |
[C++] 9. C++의 "파일 입출력" (0) | 2024.06.17 |
[C++] 8. C++의 "표준 템플릿 라이브러리 (STL)" (0) | 2024.06.17 |
[C++] 7. C++의 "객체 지향 프로그래밍" (0) | 2024.06.17 |