본문 바로가기

프로그래밍/C++

예외처리


예외의 의미

예외는 에러와는 달리 컴파일도중에 찾을 수 없는 오류를 의미합니다. , 컴파일이 끝난 뒤 실행하는 도중에서 생길 수 있는 오류가 바로 예외입니다. 분수에서 분모가 0일 경우, 할당한 메모리가 부족한 경우, 열려는 파일이 없는 경우 등이 예외에 속하는 오류들인데 이 오류들은 예기치 못하게 비정상적으로 프로그램을 종료시킬 가능성이 있으므로 이에 유연하게 대처하여 안전성 있는 프로그램을 도모하도록 해주는 기능이 바로 예외처리입니다.






예외처리 형태

예외처리는 try, throw, catch의 형태를 가지고 있습니다.

 

try (형태 : try{ /* 예외발생가능지역 */ })

우선 try는 오류가 발생하는지 여부를 감시하고자 하는 문장들을 포함하게 됩니다. try안에 포함된 문장들은 자동적으로 예외 발생이 발생하는지 감시됩니다. 그리고 catch문 안에는 항상 조건에 의해 발동하는 throw문이 있게 되는데 try문 안에서 오류가 발생하였을 시 나머지 코드는 실행하지 않고 바로 throw문을 부르게 됩니다.

 

throw (형태 : throw e; // throw에 의해 ecatch에게 던져진다.)

try문에서 에러가 생기게 되면 나머지 코드를 실행하지 않고 바로 throw문으로 제어가 넘어오게 됩니다. 이것은 다음에 오는 코드들 중에 오류를 발생시키는 코드가 있을 수 있으므로 이를 방지하기 위해 강제적으로 제어를 돌리는 것입니다. throw문은 예외 상황이 되었을 때 그것을 알려주는 역할을 하는데 throw문 혼자서는 그 역할을 할 수 없고 그 뒤에 이어지는 catch가 그 내용을 받아서 실행하게 됩니다.

 

catch (형태 : catch(처리되어야 할 예외타입){ /*예외를 처리할 코드*/ })

catch문은 throw문으로부터 제어권과 함께 넘겨받은 내용을 출력하는 역할. 즉 예외를 최종적으로 처리하는 코드블록이며 위치상으로는 반드시 try문 바로 다음에 위치해야 합니다. 하나의 catch문은 하나의 예외타입만을 가질 수 있기 때문에 때에 따라서는 서로 다른 예외타입을 가진, 다수의 catch문이 존재할 수도 있습니다. 어떤 catch문이 사용될지는 throw에서 던져지는 내용의 형에 따라 달라집니다.
, catch문은 반드시 실행되지 않는 경우가 있을 수 있는데 try문에서 예외가 발생하지 않았을 경우입니다. 이때에는 throw문도 실행되지 않기 때문에 따라서 catch문도 실행되지 않습니다. 하지만 예외가 발생되었더라도 예외사항이 catch문에 지정된 형과 일치하지 않는다면 catch문이 실행되지 않습니다.


'프로그래밍 > C++' 카테고리의 다른 글

코드를 보고 문제 정의하기  (0) 2012.02.24
예외처리 예제  (0) 2012.02.24
파일 입출력 예제  (0) 2012.02.24
오버라이딩 예제  (0) 2012.02.24
클래스에 데이터를 저장하고 가져와서 출력하기  (0) 2012.02.24