First-Chance Exception

  • Post author:
  • Post category:
  • Post comments:2 Comments
  • Post last modified:September 5, 2007

코드 프로젝트에서 소스 코드를 하나 가져왔는데, 수 년이 지난 코드라 그런지 Visual Studio 2005에서 빌드하려니 이런저런 오류가 많이 났다. 어찌어찌 손을 보고 코드를 실행시키는데 이게 웬걸 First-Chance Exception이 발생한다. C++을 다루다 안 다루다 하니 이 오류가 무슨 뜻인지 잊어버렸는데, 이 참에 정리해둔다.

First and second chance exception handling는 이 예외를 잘 설명해놨는데, 우리가 흔히 보는 예외는 Second-Chance Exception이다. 그에 비해 First-Chance Exception은 디버깅 모드에서만 발생하는데, 실제 예외(Second-Chance Exception)이 발생할 가능성이 있는 곳을 미리 탐지한다고 생각하면 쉽다. 이때 First-Chance Exception이 발생하더라도 실제 예외는 발생하지 않을 수 있다. 그러니 First-Chance Exception을 무시하더라도 어떤 의미에선 큰 지장이 없다.

참고로 디버그랩 게시판에는 이런 조언도 있다.

이런 경우에는 Debug -> exception -> 다이알로그 창에서 맨 밑의 항목 Microsoft C++ Exception을 stop always로 설정하셔도 많은 부분을 잡아낼 수 있습니다. 이렇게 해두면 예를 들어 DB exception이 발생하여 보통때는 "~ 테이블을 찾을 수 없습니다.." 정도로 메시지를 뿌려주고 지나가는 경우에도 먼저 브레이크가 걸린 다음에 메시지 박스가 나타나는 것에서부터 쓰레드 관련 오류 메모리 관련 오류( Access Violation을 stop always로 설정)등등 많은 부분이 미리 캐치됩니다. visual studio 6.0에서 사용하는 내용이고 Debug -> exception 메뉴는 프로그램 실행 중에만 활성화됩니다. F5 누르고 프로그램 시작하셔서 설정하시면 됩니다.

Author Details
Kubernetes, DevSecOps, AWS, 클라우드 보안, 클라우드 비용관리, SaaS 의 활용과 내재화 등 소프트웨어 개발 전반에 도움이 필요하다면 도움을 요청하세요. 지인이라면 가볍게 도와드리겠습니다. 전문적인 도움이 필요하다면 저의 현업에 방해가 되지 않는 선에서 협의가능합니다.
0 0 votes
Article Rating
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

2 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
ohyecloudy
17 years ago

First-Chance Exception은 한번도 보지 못했는데, 이런 뜻이었군요. stop always를 당장 켜 놔야겠습니다. 좋은 내용 잘 봤습니다.

최재훈
17 years ago

저도 예외 설정을 켜놓고 작업하기 시작했습니다. 얼마나 도움이 될지는 지켜봐야겠네요.