try catch throw

던져진 타입과 맞는 `catch`만 실행된다

`safeDivide()`가 `std::string`을 던지면 현재 `try` 블록의 남은 문장은 건너뛰고, 선언 순서대로 호환되는 `catch`를 찾습니다.

throw
throw std::string("Division by zero");

예외 객체가 만들어지고 현재 함수 실행이 중단됩니다.

skip
This line will not be executed.

같은 `try` 안의 뒤쪽 문장은 실행되지 않습니다.

match
catch (const std::string& e)

`int`나 `catch(...)`보다 먼저 일치하는 타입의 블록이 선택됩니다.

continue
Program continues after exception handling.

처리가 끝나면 `try-catch` 뒤의 정상 흐름으로 돌아옵니다.