Introduction

01. try, catch, throw 문으로 예외 처리 [Practice 04-01-01]

<aside> ❗

cin에서 정수를 입력받는데 문자열을 입력한다면, 0을 할당하게 된다.

</aside>

assert를 이용해 프로그램의 특정 지점에서 true로 예상되는 조건을 지정한다. 만약 지정한 조건이 true가 아니면 프로그램 실행이 중단되며, 비주얼 스튜디오에서는 출력 결과( 오 )의 모습처럼 어설션 실패 대화상자가 나타나 어떤 문제가 발생했는지를 알려준다.

assert를 이용해 프로그램의 특정 지점에서 true로 예상되는 조건을 지정한다. 만약 지정한 조건이 true가 아니면 프로그램 실행이 중단되며, 비주얼 스튜디오에서는 출력 결과( 오 )의 모습처럼 어설션 실패 대화상자가 나타나 어떤 문제가 발생했는지를 알려준다.

출력 결과

출력 결과

02. 예외 처리 생략과 실패 대응

예외 처리 메커니즘도 때로는 예외를 처리하지 못할 수 있다. 이번에는 noexceptset_terminate를 활용해 예외 처리와 예외 처리 실패에 대응하고 프로그램의 안정성과 신뢰성을 높이는 방법을 알아보겠다.

**함수가 예외를 던지지 않음을 명시** 

int func() noexcept {
		//실행 코드
}

효과 :
컴파일러가 최적화를 수행할 수 있으며, 예외 처리에 대한 오버헤드를 줄일 수 있습니다.
**종료 처리 함수 설정하기**

set_terminate(종료_처리_함수);

![출력 결과 >> myterminate called, 강제 종료 전 종료 처리 함수가 호출되었다.

<cstdlib> 헤더에 정의된 exit함수를 사용하였다. exit함수에 0을 전달하면 프로그램을 정상으로, -1을 전달하면 비정상으로 종료한다.](https://prod-files-secure.s3.us-west-2.amazonaws.com/c222b6ef-3c6d-41f4-af84-d26c72ffdcd7/df4c4200-fb6e-4ff6-aff0-38c616ab815f/image.png)

출력 결과 >> myterminate called, 강제 종료 전 종료 처리 함수가 호출되었다.

<cstdlib> 헤더에 정의된 exit함수를 사용하였다. exit함수에 0을 전달하면 프로그램을 정상으로, -1을 전달하면 비정상으로 종료한다.

03. 단원 마무리 문제