Exceptional C++ Style : 11. try와 catch
try 블록이란? 코드 블록으로 해당 블록 내의 코드에서 예외가 발생하면 블록 다음에 있는 하나 이성의 catch 절들중 발생한 예외 형식에 맞는 처리부로 제어권이 이동된다. // 예제 11-1 : try block 예제 try { if (some_condition) throw string("this is string"); else if (some_other_condition) throw 42; } catch (const string&) { // string이 던져졌을때 여기가 수행 } catch (...) { // string 이외의 모든 예외는 여기서 처리된다. } try-catch 보다 중요한것 (= 예외 안정성) 예외 안전성은 try-catch의 작성과는 큰 관련은 없으며, try와 catch를 작성한다 해서 예외 안정성이 증가하는 경우도 드물다. 예외 안전성을 위해 고려해야 할 점 예외를 언제, 어디서 던져야 할까? Throw 문을 어디에 넣을것인가에 대한 문제 오류를 검출하긴 하지만 해당 오류를 처리하지는 못하는 곳에서 작성 예외를 언제, 어디서 처리해야 할까? try-catch를 어디에 넣을것인가에 대한 문제 예외를 잡았을때 catch에서 수행하는 것 오류 변환 : 예외를 상세화 하여 상위 stack으로 throw 하거나 오류 code를 return 오류 처리 : 예외 발생 전에 할당한 동적 자원의 해제 RAII 를 이용하여 programming하였다면 동적 자원 해제를 위한 try-catch는 제거 할 수 있음. 어떤 함수 호출에 의한 예외가 내코드까지 거슬러 올라왔을때 내 코드는 과연 안전할 것인가? 해당 예외가 적절한 오류 처리부에 도달하기 전에 그 예외를 신경쓰지 않고 작성한 어떤 코드에 도달하는 것만으로 프로그램 전체가 죽는 일이 없도...