관리 메뉴

ComputerVision Jack

[C++프로그래밍 Chapter15] 본문

Programming Language/C++ Programming

[C++프로그래밍 Chapter15]

JackYoon 2020. 2. 6. 13:34
반응형

[예외 처리]

예외 : 프로그래밍 실행 도중에 발생하는 예외적인 상황

문법적 오류가 아닌, 프로그램의 논리에 맞지 않는 상황

 

if문을 이용한 예외 처리

우리가 전에 배운 예외 처리 방식은 if문이다. if문으로 프로그램의 흐름에 위배되는 경우가 발생하면

흐름을 정리하여 구분한다. 

하지만 예외처리를 위한 문장인지 프로그램의 흐름 떄문인지 분간하기 어렵다.

[C++ 예외처리]

  • try : 예외를 발견한다
  • catch : 예외를 잡는다.
  • throw : 예외를 던진다.

try 블록

예외 발생에 대한 검사의 범위를 지정할 때 사용된다. try 블록내에 예외가 발생하면 처리하도록 보낸다.

try{

      예외 발생

}

catch 블록

try 블록에서 발생한 예외를 처리하는 코드가 담긴 영역.

catch(예외 종류) {

              예외 처리 코드

}

 

try catch문은 하나의 문장. 따라서 중간에 다른 실행 문장이 오면 컴파일 에러를 발생한다.

 

throw 키워드

예외가 발생 했음을 알리는 문장의 구성에 사용

throw의해 던져진 예외 데이터는 try문에 의해 감지가 되어 catch문으로 보내져 처리가된다.

[스택 풀기(Stack Unwinding)]

스택 풀기(Stack Unwinding)

함수를 호출한 후, 함수내에서 예외 상황이 발생했는데 try catch문이 존재하지 않으면 함수를 빠져나와 함수를 호출한 영역으로 넘어가게 되는 현상.

 

예외가 처리되지 않으면 예외가 발생한 함수를 호출한 영역으로 예외 데이터가 전달된다.

예외 상황과 예외 처리 위치가 다를 수 있다.

 

하나의 try블록 다수의 catch 블록

하나의 try예외에 대하여 발생 자료형을 모를 경우 다수의 catch문을 사용하여 상황에 맞게 대응한다.

 

전달 되는 예외의 명시

예외의 종류도 함수의 특징으로 간주된다.

함수에 예외가 발생할 수 있는 상황에 대한 주석같은 느낌으로 throw를 이용하여 표기한다.

 

int Function(int value) throw(int, char) {  ...  }

#int와 char에 대해여 예외가 발생 할 수 있다.

만약 함수 선언에 명시되지 않은 예외가 발생 할경우 unexpected()함수 호출되면서 프로그램을 종료시킨다.

[예외 클래스의 설계]

예외 객체

예외발생을 알리는데 사용되는 객체.

예외 객체의 생성을 알리기 위하여 정의된 클래스를 예외 클래스라고 한다.

 

예외 클래스간의 상속관계 또한 정의된다.

 

 

 

반응형

'Programming Language > C++ Programming' 카테고리의 다른 글

[C++프로그래밍 Chapter16]  (0) 2020.02.07
[C++프로그래밍 Chapter14]  (0) 2020.02.05
[C++프로그래밍 Chapter13]  (0) 2020.02.04
[C++프로그래밍 Chapter12]  (0) 2020.02.03
[C++프로그래밍 Chapter11]  (0) 2020.02.01
Comments