2011-08-10 3 views
1

많은 사람들이 C++ 프로그램에서 예외를 사용하는 것을 싫어하는 경향이 있습니다.왜 예외 처리가 C++에서 종종 보입니까?

어떤 사람들은 예외가 C++에 자연스럽지 않다고 말하는 것으로까지 간다.

게임 프로그래머는 일반적으로 예외 처리를 비활성화합니다.

또한 예외 처리는 일반적으로 성능이 중요한 응용 프로그램에서는 피할 수 있습니다.

나는 C++이 항상 예외 처리를하지는 않는다는 것을 알고있다.

피하는 이유가 있습니까?

+0

어떻게 해결 되나요? – sje397

+0

어떻게 주제에서 벗어나나요? 그것은 사실이 아닌 것으로 가정합니다 (예외 처리는 "일반적으로 C++에서 보입니다"). 이것이 할 수있는 유일한 일은 논쟁이며, 이것은 Q & A 사이트이며 토론 포럼이 아닙니다. –

+0

유일하게 잘못된 것은 질문의 약간 추정 톤입니다 (편집 할 수 있음). 예외는 일반적으로 _ 내려지지 않을 수도 있지만 _ 아래로 내려다 보입니다. 이유 (일명 대답)가 계몽적이고 교육적인 이유. – sje397

답변

4

나는 예외를 제외하고 네 개의 문제가 :

  • 사람들은, 당신은 또한 잘 정통한 될 필요 적절하게 사용하기 위해서는
  • 흐름이 아닌 특별한 프로그램의 일부로 사용하는 유혹
      (RAII, 똑똑한 포인터)
    1. "쉬운 방법"- "물건을 던지십시오 - 그냥 던지십시오"
    2. 신중한 계획이 없으면 많은 수의 ' 프로의 바깥 쪽 레벨에서 'catch'문을 사용합니다. 그램 (또는 더 나쁜 '캐치 올')

    그래서 나는 다양한 기술을 가진 프로그래머와 팀에서 사용하지 않는 경향이 있습니다. 제대로 사용하면 멋지 네요.

  • 1

    사람들이 C++에서 예외를 사용하지 않는 이유는 모르겠지만 성능이 중요한 코드의 경우 그 이유를 알 수 있습니다. 일반적으로 C 스타일 처리와 비교하여 오류 코드를 반환하고 오류 처리를 위임하는 것에 비해 예외가 발생하는 것은 상대적으로 비용이 많이 듭니다. 내 생각 엔 예외가 구현되기 이전의 레거시 C++ 코드입니다. 또 다른 이유는 예외 클래스를 작성하는 것이 의미가 없거나 다른 방법으로 오류를 처리하는 것이 훨씬 쉬운 경우 일 수 있습니다. C++이 항상 예외를 가지고있는 것은 아니기 때문에 좋은 답변을 제공하는 것으로 여겨지는 것처럼 실제로 언급 할 수없는 두 번째 문장.

    4

    예외를 피하기 위해 좋은 이유가 있습니다 :

    1. 예외 안전성이 약간 어렵고 단지 런타임에 실패 할 수있는 많은 물건되지 않습니다 매우 신중하게
    2. 이 게임에서 다음과 같은 규칙을 필요로한다. 실패 할 수있는 모든 것은 게임의 초기화에 있습니다. 게임의 핵심 성능 부분에없는 파일 등의로드. 게임의 성능이 중요한 부분이라면 왜 처음에는 실패 할 수 있는지 질문해야합니다.
    3. 스택 되감기는 소프트웨어 디버깅에 문제를 일으 킵니다. 무언가가 던져지면 코드에서 어디에서 발생했는지 찾기가 어렵습니다.
    관련 문제