예외는 에러와 다르다.

처리상 문제가 될수 있는 값이나,코드들을 말하며

 

try 블럭과 catch 블럭으로 이를 처리한다.

 

try 블러과, catch 블럭은 같이 와야 하다.

try

   {

   코드

   }

catc(예외 형태)

  {

  코드

  }

try 블럭은 하나만 와야하지만, 그에 따른 catch 블럭은 여러개 일수 있다.

이때 Throw가 발생되면 Catch가 순서적으로 확인한다.

처리 될수 있는 예외인지, 처리하지 못하는 경우라면 abort가 호출딘다.

 

예외 발생은 throw를 사용하여 발생 시킨다 try 블럭내에 기술되며, 다른 함수들에서도 기술될수도 있다.

throw 예외 형태 값(일반 자료형 값, 클래스 등등이 올수 있다)

throw 5

 

catch 블럭은 함수와 유사하다.

catch(int ex)

{

 코드

}

 

try이 블럭에서 호출된 함수에서 trow가 있는 경우는

그 함수의 처리가 중단되고, 호출함 함수로 넘어간다. 예외가 넘어간다.

그 함수에서도 예외 처리 문구(Try~catch)가 없다며 그 예외는 그 함수를

호출한 함수로 넘어간다. 이런식으로 갈때

main 함수에도 없다면 시스템으로 넘가므로

stdin.h에 서술된 abort 함수를 호출하게 되며 프로세스는 종료된다.

 

함수에서 발생될수 있는 형태를 지정할수 있다. 그 이외의 예외가 발생되면

역시 마찬가지로 about 함수를 호출하고 프로세스는 종료된다.

함수(인자)throw (예외 형들)

int extest(int a) throw(int,char,carr*)

 

catch에서 모든 예외 처리

catch(...)

 

catch 블럭내에서 trow를 쓰게되면

해당 예외를 현재 try~catch블럭을 포함하는

다른 try~catch 블럭의 catch 블럭에 전달된다.

 

되도록이면 예외를 처리할수 있는 클래스를 따로 만들어 처리 하는 것이 좋다.

그 클래스의 개체를 Thow하여 처리되도록 한다.

예외 처리하는 클래스가 exA라고 하면

throw exA(1,2,3)

이처럼 클래스 개체를 사용하면, 동시에 어떤것 때문에 예외가 발생되었는지 추가적인 정보를 전달할수가 있게 된다.

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

string(UTF-8)을 유니코드로 변환하여 다시 String 형으로  (0) 2013.01.16
윈도우 OS,윈도우 생성과,처리  (0) 2012.12.31
템플릿  (0) 2012.11.22
연산자 오버로딩  (0) 2012.10.28
virtual  (0) 2012.10.27

+ Recent posts