| [ CnUnix ] in KIDS 글 쓴 이(By): shamin (S Kim) 날 짜 (Date): 2003년 6월 6일 금요일 오후 02시 44분 10초 제 목(Title): Re: c++ exception handling (윈도, 유닉스 처음부터의 오해는 에러를 예외로 가정한데서 오는 것 같습니다만, 예외(Exception)와 에러는 다릅니다. 두 개념을 서로 섞지 마십시오. 이 두 가지 개념은 표준에서 예외처리 기술을 만들었던 BS, Koenig, T. Williams 등 1980년대 초기의 표준 위원회에 의해 명확히 구분되고 있습니다. 그리고 당시 위원회의 의도는 지금도 유효합니다. 예외처리는 에러의 처리를 의미하지 않습니다. 이는 이식성의 문제이고 뭐고를 다 떠나서 C++ 언어에서 예외처리 기술을 정의하기 위한 기본적인 가정이었습니다. 제수가 0인 나눗셈 연산은 예외적인 상황의 발생이 아닌 단순한 수식의 에러입니다. 예외와 에러가 구분이 안되십니까? 예를 들어봅시다. - 프로그램에서 A의 경우만을 가정하였는데, B가 발생한다면 예외입니다. - a[10]의 배열에서 a[20]의 접근을 하였다면 이는 에러입니다. - 바로 위의 예에서 배열의 첨자를 변수로 두고, 첨자에 조건이 10미만의 0과 양의정수만으로 한정하는 것이라면, 첨자에 20이 오는 것은 예외입니다. 정리하자면 다음과 같습니다. - 예외는 올바른 프로그램(1)이 정상적으로 동작하지 못하는 경우의 발생이고, - 에러는 올바르지 못한 프로그램(2)이 일으키는 잘못을 말합니다. 1 : conforming program or strictly c.p. 2 : ill-formed program or UB depeneded program -- S Kim |