2016년 3월 15일 화요일

[c++] 예외(Exception) 처리, try, catch, throw

예외처리 
예외란 무엇인가? 예외란 일반적이지 않는 상황을 말하는 것이다. 에러가 아니라는 말이다. 이런 일반적이지 않은 프로그램의 흐름을 처리 하는것을 예외 처리 라고 한다. 


try, catch, throw
 : 일단 예외를 처리 하려면, 그에 맞는 문법을 써야 할 것이다. 
  1. try  
  2. {   
  3.     //예외 발생 예상지역  
  4. }  
  5.   
  6. catch(처리되어야할 예외의 종류)  
  7. {  
  8.     //예외를 처리하는 코드가 존재할 위치  
  9. }  
 위는 try, catch 문이다. try에는 예외라 불릴 상황을 가진 문장을 집어 넣는 것이다. (try 문은 무조건 실행이 된다.) 처리되어야 할 예외의 종류를 받아 catch 문에서는 이 예외에 대한 처리를 해주는 것이다. (명시적으로 cout문을 이용해 예외가 발생했다고 처리해 주거나 한다)
  1. if ( 조건 )  
  2.     throw ex;  
 다음은 throw로 위와 같이, "조건에 합당하면 예외를 던진다" 예제 소스코드를 보면 이해가 더 쉬울 것이다.
  1. #include <iostream>  
  2. using namespace std;  
  3.   
  4. int main(void)  
  5. {  
  6.     int num;  
  7.   
  8.     cout<<"input number: ";  
  9.     cin>>num;  
  10.   
  11.     try{  
  12.         if(num>0)  
  13.             throw 10;  // int형 예외 전달.  
  14.         else  
  15.             throw 'm';  // char형 예외 전달.   
  16.     }  
  17.     catch(int exp){  
  18.         cout<<"int형 예외 발생"<<endl;  
  19.     }  
  20.     catch(char exp){  
  21.         cout<<"char형 예외 발생"<<endl;  
  22.     }  
  23.     return 0;  
  24. }  
 입력을 받는다고 가정하자. 이 입력받는 곳에는 숫자만 들어와야 하는데, 만약 문자가 들어 온다면 이 상황에서 문자가 들어온 것이 바로 예외 상황이다. 이런 예외 처리를 만약 문자형을 받으면 "예외를 던져(throw exception)" 그 예외에 해당하는 상황을 출력하는 간단한 예제이다. 여기에서 예외 전달을 위해 int 타입도 예외를 전달하는 모습을 보여주고 있다.

댓글 없음:

댓글 쓰기

[Effective C++] 항목 30 : 인라인 함수는 미주알고주알 따져서 이해해 두자.

인라인 함수를 사용하면 컴파일러가 함수 본문에 대해 문맥별 최적화를 걸기가 용이해집니다. 인라인 함수의 아이디어는  함수 호출문을 그 함수의 본문으로 바꿔치기하자는 것  남발했다가는 코드의 크기가 커질 게 뻔하다. 인라인 함수로 부풀려진 ...