플로렌스라는 개발자

C++ 예외 발생 후 고려해야할 문제

예외가 발생한 후에도 문제를 일으킬 수 있는 두 가지 가능성이 있습니다. 예외가 발생했을 때 예외 지정자 리스트에 있는 데이터형들과 일치하는 게 없을 때 일치하는 게 없다면 그 예외는 기대하지 않는 예외(unexpected exception)라는 낙인이 찍히고 기본적으로 프로그램 실행이 중지됩니다. 예외가 발생한 후에 try블록이 없거나 예와 일치하는 catch블록이 없을 때(예외가 포착되지 않았을 때) 이러한 경우에는 포착되지 않는 예외(ucaught exception)라는 낙인이 찍히고 기본적으로 프로그램 실행이 중지됩니다. 이 둘은 예외에 대한 프로그램 응답을 사용자가 변경할 수 있습니다. 포착되지 않는 예외 예외가 발생했으나 포착되지 않는 예외가 발생했을 때 다음과 같은 순서로 진행합니다. ter..

프로그래밍/C++ 2019.11.02 Plorence

C++ 예외 클래스(exception class)

C++ 예외들의 주목적은, 오동작을 방지하는 프로그램을 설계할 수 있도록 언어 차원에서 지원하는 것입니다. 최신 C++ 컴파일러들은 언어 자체에 예외들을 포함시키고 있습니다. exception헤더 파일은 다른 예외 클래스들의 기초 클래스로 사용하는 exception 클래스를 정의합니다. exception 객체를 발생시키거나 기초 클래스로 사용할 수 있습니다. exception 클래스는 what()이라는 하나의 가상 멤버 함수가 주어집니다. 시스템의 특성에 따라 하나의 문자열을 리턴합니다. #include #include class Exce : public std::exception { public: const char* what() { return "문제가 있습니다."; } }; void Func1() ..

프로그래밍/C++ 2019.11.01 Plorence

C++ 예외(Exception)와 Abort함수

프로그램을 실행하다 보면 가끔 정상적으로 실행을 계속할 수 없는 상황이 있습니다. 사용 가능한 메모리보다 더 많은 양의 메모리를 요구함 파일을 읽으려고 하는데 해당 파일이 없음 인터넷 웹사이트에서 값을 가져오는데 인터넷 연결이 안 되어 있음 위와 같은 여러 상황이 생길 수 있습니다. 대부분의 프로그래머들은 이런 상황을 미리 예상하려고 노력합니다. 그래서 C++은 이러한 상황을 처리하기 위해서 예외를 추가했습니다. abort() 호출 abort함수의 원형은 cstdlib헤더 파일에 들어있습니다. 일반적으로 abort()함수는 호출되었을 때 표준 에러 스트림에 "abnormal program temination"(비정상적인 프로그램 종료)과 같은 메시지를 보내고 프로그램을 종료시키도록 구현되어 있습니다. #..

프로그래밍/C++ 2019.11.01 Plorence