2016-11-11 6 views
-2

내 라이브러리에 대한 사용자 정의 예외 클래스가 있습니다. SEH 처리기를 등록하고 액세스 위반, 불법적 인 명령, 0으로 나누기와 같은 CPU 예외를 catch해야하는지 여부를 알고 싶습니다. 그런 다음 CPU 예외가 발생했다는 것을 내 라이브러리 클라이언트에보고 할 수 있습니다.SEH 처리기를 등록하고 내 라이브러리에서 CPU 예외를 catch해야합니까?

+0

이 질문은 C++의 Windows 질문이라고 생각합니다. – Gonmator

답변

1

정말 필요한 특정 시스템 관련 라이브러리를 작성하지 않는 한 SEH 처리기를 등록하면 안됩니다. 그렇게하면 응용 프로그램에 오류가 숨겨집니다.

첫 번째 규칙은 SEH 예외를 처리하지 말고 응용 프로그램이 구성된대로 처리하도록해야합니다.

그러나 예외를 발생시킬 수있는 외부 API를 호출하기 때문에 라이브러리를 호출 할 때 예외가 발생하여 프로그램이 중단 될 수 있다고 생각되면 catch할만한 가치가 있는지 평가해야합니다 그들에게 어떤 행동 (예 : 오류보고)을 취하십시오. 그러나이 경우 예외 보호 범위와 필터를 가능한 한 좁게 제한하십시오.

시스템 예외가 사용자 코드로 인해 발생한 경우 숨겨서는 안되며 곧 수정되어야합니다.