42/42s Cursus
[Rank 4] CPP 05
치춘
2022. 9. 11. 22:38
CPP05
Repetition and Exceptions
반복과 예외
예외 클래스 (std::exception) 상속받아 예외 만들기
[Effective Modern C++] 항목 14. 예외를 방출하지 않을 함수는 noexcept로 선언하라
class ExceptionFoo: public std::exception {
public:
const char* what() const throw(); // C++98까지, 현재는 deprecated
const char* what() noexcept override; // C++11부터 추가된 키워드
};
std::exception
클래스 구현체를 보면 C++ 98에서는 throw()
를 사용하고, C++11부터는 noexcept
키워드를 사용한다
throw()
는 해당 멤버 함수가 예외가 발생할 여지가 없음을 나타내기 위해 빈 throw
함수로 표현한 것이다
여기서 맨 아래의 const char* what() const throw()
를 오버라이딩하면, 예외 발생 시 출력되는 문구를 재정의할 수 있다
에러 메시지는 what()
메서드로부터 받아와 출력하기 때문이다
C++ 파일 오픈 시 플래그
std::ios::in
- 읽기 위한 파일
std::ios::out
- 쓰기 위한 파일
std::ios::trunc
- 파일이 존재하면, 삭제하고 다시 생성
std::ios::binary
- 이진 파일 모드
위 플래그들은 |
기호 (or 기호) 를 통해 여러개를 같이 사용할 수 있다