본문 바로가기

C++

[C++] C++ ESPRESSO 중간 점검 3-11

중간 점검 (436p)

1. 예외는 어떤 경우에 발생하는가?

잘못된 코드, 부정확한 데이터, 예외적인 상황에 의하여 오류가 발생할 수 있다.

) 0으로 나누는 것과 같은 잘못된 연산이나 배열의 인덱스가 한계를 넘을 수도 있다.

디스크에서는 하드웨어 에러가 발생할 수 있다.

반드시 있어야 할 파일이 없을 수도 있고 네트워크가 다운될 수도 있다.

 

2. 예외를 처리하는 경우와 처리하지 않은 경우를 비교하여 보라. 처리할 때의 장점은 무엇인가?

대개의 경우 오류가 발생하면 프로그램이 종료된다. 그러나 무조건 종료하는 것보다 프로그램에서 오류를 감지하여 우아하게 프로그램을 종료하거나 오류를 처리한 후에 계속 실행할 수 있다면 더 나은 프로그램이 될 수 있다.

 

중간 점검 (441p)

1. try 블록에서 예외가 발생한 지점 이후의 문장들은 실행되는가?

실행되지 않는다.

 

2. catch 블록에서 모든 예외를 다 잡으려면 매개 변수를 어떻게 정의하는가?

매개 변수를 . . .로 표시하면 된다.

catch(. . .)

{

// 모든 예외를 잡아서 처리할 수 있다.

}

 

중간 점검 (444p)

1. 예외를 처리했지만 호출한 함수에게도 예외를 보내줄 수 있는가?

인자를 생략하고 throw 문장을 작성하면 된다.

 

2. 예외는 세 개의 함수를 거쳐서도 전달될 수 있는가?

예외는 함수 범위를 넘어서 전달될 수 있다.

 

중간 점검 (446p)

1. 발생한 catch 블록의 매개 변수는 어떤 규칙에 의하여 매칭되는가?

 

2. 어떤 타입이라도 catch 블록의 매개 변수로 지정할 수 있는가?

어떤 타입도 가능하므로 다양한 타입을 사용할 수 있다.

 

중간 점검 (449p)

1. catch 블록의 매개 변수를 참조자로 정의하게 되면 어떤 경우에 유용한가?

만약 매개 변수를 부모 클래스의 참조자 타입으로 지정하면 상속에서 학습한 바와 같이 자손 클래스의 객체들을 모두 잡을 수 있다.

 

2. 클래스 A의 객체를 매개 변수로 받는 catch 블록을 정의하여 보라.

'C++' 카테고리의 다른 글

[C++] C++ ESPRESSO 중간 점검 3-13  (0) 2022.04.07
[C++] C++ ESPRESSO 중간 점검 3-12  (0) 2022.04.06
[C++] C++ ESPRESSO 중간 점검 2-10  (0) 2022.04.04
[C++] C++ ESPRESSO 중간점검 2-9  (0) 2022.04.03
[C++] C++ ESPRESSO 중간 점검 2-8  (0) 2022.04.02