C++/Exception
2021. 3. 22. 00:10
예외 처리의 기본
try, throw, catch
try
: 코드를 실행할 부분throw
: 예외 상황이 발생하면 해당 정보를 던지는 부분catch
:try
내부에서throw
가 발생했을 경우 이를 받아주는 부분#include <iostream> using namespace std; int main() { double x; cin >> x; try { if (x < 0.0) throw string("Negative input"); cout << std::sqrt(x) << endl; } catch (string error_message) { cout << error_message << endl; } } /* stdin -10 */ /* stdout Negative input */
묵시적 형변환이 허용되지 않는다.
ex)
std::string
->const char*
불가능#include <iostream> using namespace std; int main() { double x; cin >> x; try { if (x < 0.0) throw "Negative input"; // 런타임 에러 cout << std::sqrt(x) << endl; } catch (string error_message) { cout << error_message << endl; } }
주의사항
연산량이 많아서 처리속도가 느려지므로, 성능이 중요한 프로그램에서는 가급적 사용을 지양해야 한다.
조건문으로 거를 수 있는 예외 상황은 조건문을 사용해서 처리하는게 좋다.
예측 불가능한 예외 사항에 대해서만 사용하는게 좋다.
'C++ > Exception' 카테고리의 다른 글
C++ 예외 처리의 위험성과 단점 (0) | 2021.03.22 |
---|---|
C++ 함수 try (Function try) (0) | 2021.03.22 |
C++ 예외 클래스와 상속 (Exception Class and Inheritance) (0) | 2021.03.22 |
C++ 스택 되감기 (Stack Unwinding) (0) | 2021.03.22 |
C++ 예외 처리 (Exception Handling) (0) | 2021.03.22 |