Motivation
[C++ Exception Handling]
- C++에서의 예외 처리는
: 프로그래머가 알고리즘을 구현하는 코드와 해당 알고리즘이 직면할 예외를 깨끗하게 분리할 수 있음
: 더 모듈식이고 더 깨끗하고 유지 및 디버그하기 쉬운 코드 개발을 장려
- 예외(exception)는
: 프로그램을 실행하는 동안 발생하는 예외적인 이벤트
: 가능 하지만, 상대적으로 드문 사건에 대한 경
: 거의 오류를 제기하지만, 일반적으로 run-time 오류임
Exception Handling Statement
[try and catch]
- run-time 오류 를 차단하고 오류로 인해 프로그램이 종료되는 것을 방지
=> try/catch block 이용
- try/catch block을 생성하기 위해
1. 예외를 발생시킬 수 있는 코드를 try block에 넣음
2. 예외가 발생한 경우에만 실행할 코드를 catch block에 넣음
3. 각 block에 하나의 문장만 나타나더라도 반드시 {}안에 넣어어야 함
[std::exception (Standard exception class)]
- 일반적인 예외를 위한 base class
=> standard library 의 구성 요소가 던진 모든 개체는 이 클래스에서 파생
=> 모든 표준 예외는 이 유형을 참조로 잡으면 잡을 수 있음
Error in Nested Function Call
[Finding Nearest catch Statement]
- 함수의 오류는 함수의 catch 문에 의해 발견될 수 있음
Programmer Defined Exception
[Exception Class Inheritance]
- 표준 C++ 라이브러리에 제한된 수의 표준 예외가 있음
- 프로그래머는 애플리케이션에 필요한 특수 오류 처리를 위한 자체 사용자 지정 예외를 생성 가능
- 프로그래머가 자체 constructor()와 필요한 함수를 재정의 할 수 있음
[Creating Programmer Defined Exception]
- throw statement
=> 오류가 있는 조건에 신호를 보내고 error handler를 실행함
=> 일반적으로 try block에서 throw를 이용하여 예외를 던짐
=> throw exception handler에 인수로 전달되는 하나의 매개변수를 허용
Multiple Exception Handling
[Creating Programmer Defined Exception]
여러개의 catch statement는 오류를 해결 할 수 있음
=> throw 문에 지정된 예외 유형과 인수 유형이 일치하는 핸들러만 실행
Layered Exception Handling
[Exception Re-trhrowing]
- catch block의 예외 처리기는 몇단계를 거친 이후 다시 예외를 throw 하거나 완전히 다른 예외를 throw할 수 있음