예외처리에서 궁금한게 있어요
글쓴이: impactlife / 작성시간: 화, 2013/07/30 - 10:16오후
보통 자바나 다른 프로그램들에서는 특정예외 처리 외에 그밖의 예외는 통합적으로 처리할 수 있도록
try{
...
}catch(IOException ie){
IO예외 처리
}catch(NullPointerException ne){
널포인트 예외 처리
}catch(Exception e){
그밖의 예외 처리
}
이렇게 가장 부모예외클래스로 다형성을 이용해서 예외처리가 가능한데요
c++에서는 이걸 어떻게 처리하나요?
try{
s = 10 / 0;
}catch(...){
cout << "에러발생!" << endl;
}
이것도 안되고
try{
s = 10 / 0;
}catch(std::exception &e){
cout << "에러발생!" << endl;
}
이것도 안되네요.
예외처리는 안되고 런타임에러가 나더라구요.
어떻게 해야 될까요?
Forums:
아 이런...
0으로 나누는건 예외가 아니라 그 자체로 에러인가요?
http://stackoverflow.com/ques
http://stackoverflow.com/questions/6121623/catching-exception-divide-by-zero
참고하세요.
음...
제가 가방끈이 짧아 영어가 딸려서 해석을 잘못했을 수도 있지만 나름 해석해보면
결론은 catch(...) 을 이용하면 된다고 하는거 같은데요 그래도 안되네요
예제문은 모두 예외상황을 모두 예측해서 throw 던지고 있는데
그렇게 예상해서 다 코딩해놔야 하는건지요?
set_terminate 라는 함수를 이용하면 되긴되는데 예외를 잡고 나서 프로그램 종료를 시키지 않으면 런타임에러는 그대로 나네요.
에러가 난걸 처리하고 그 다음 런타임에러를 무시할 수만 있다면 좋은데...
표준에서는 0으로 나눔 에러를 익셉션으로 정의하고
표준에서는 0으로 나눔 에러를 익셉션으로 정의하고 있지 않습니다. 익셉션이 아닌 것을 try-catch로 잡으려고 하시니 원하는 대로 동작하지 않는 것입니다.
꼭 익셉션으로 0으로 나눔 에러를 처리하시려거든 실제 나누는 값이 0인지를 확인해서 직접 익셉션을 던지시는 것이 좋을 것 같습니다.
그렇군요
표준에 없는거군요.
뭐 안되는걸 어쩌겠냐만 덕분에 확실히 알게 되어 감사합니다.
고맙습니다.
댓글 달기