C++에서 기본 제공 예외 클래스는 무엇인가요?
_____A: C++ 표준 라이브러리는 예외 처리를 위해 기본 제공되는 여러 예외 클래스들을 제공합니다. 이들은 모두 `
---
주요 기본 예외 클래스:
1. std::exception
- 모든 표준 예외 클래스의 최상위 기본 클래스입니다.
- `virtual const char* what() const noexcept;` 멤버 함수로 예외에 대한 설명을 문자열로 반환합니다.
2. std::bad_alloc
- 메모리 할당 실패 시 던져지는 예외입니다.
- new 연산자가 메모리를 할당하지 못할 경우 발생합니다.
3. std::bad_cast
- 잘못된 타입 캐스팅(dynamic_cast 실패)이 발생했을 때 던져집니다.
- 주로 RTTI(dynamic type identification) 관련 상황에서 발생합니다.
4. std::bad_typeid
- typeid 연산자를 잘못 사용했을 때 발생하는 예외입니다.
- 예를 들어 다형성 객체가 널 포인터인 경우.
5. std::bad_exception
- noexcept 함수 내에서 예상치 못한 예외가 던져질 때 표준 라이브러리가 던지는 예외입니다.
6. std::logic_error
- 논리적 오류를 나타내는 예외의 기반 클래스입니다. 프로그래머 실수로 인한 오류를 나타냅니다.
- 파생 클래스 예시:
- std::invalid_argument: 함수로 잘못된 인자가 전달되었을 때
- std::domain_error: 수학적 도메인 오류 발생 시
- std::length_error: 컨테이너 크기 초과 오류 등
- std::out_of_range: 유효하지 않은 인덱스 접근 등
7. std::runtime_error
- 실행 중 발생하는 오류를 나타내는 기본 클래스입니다.
- 파생 클래스 예시:
- std::range_error: 부동 소수점 범위 오류 등
- std::overflow_error: 산술 오버플로 발생 시
- std::underflow_error: 산술 언더플로 발생 시
---
참고 사항:
- 이들 예외 클래스는 모두 `std::exception`을 상속받아 `what()` 함수를 제공해 오류 메시지를 반환할 수 있습니다.
- 개발자는 이 기본 예외 클래스를 상속받아 자신만의 예외 클래스를 쉽게 만들 수도 있습니다.
- 표준 라이브러리 함수들은 적절한 상황에 맞는 기본 예외들을 활용하여 오류를 알립니다.
---
정리하면, C++의 기본 제공 예외 클래스는 `std::exception` 계층구조 내에 여러 구체적 예외 타입이 포함되어 있으며, 메모리 할당 실패, 잘못된 인자 전달, 범위 벗어남, 실행 중 오류 등 다양한 상황에서 표준화된 예외 처리를 제공합니다.
작성자:
정다현 [비회원]
| 작성일자: 1년 전
2024-09-20 17:11:31
조회수: 143 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
조회수: 143 | 댓글: 0 | 좋아요: 0 | 싫어요: 0
내용이 부정확하다면 싫어요를 클릭해주세요.