dynamic_cast<SomeType&>
이 실패하면 bad_cast
예외가 발생합니다. 내 코드에는 예외 클래스가 별도로 있으며 bad_cast
은 해당 계층에 없으므로 코드가 bad_cast
을 처리하지 않습니다. 대신에 다른 예외가 발생할 수 있습니까? 슬로우 ++ 런타임이 핸들러 대신 bad_cast
의 호출되도록bad_cast가 발생했을 때 사용자 지정 처리기를 설치할 수 있습니까?
RegisterMyBadCastHandler(&OnBadCast);
에게
void OnBadCast()
{
throw MyException("Bad cast");
}
어떻게 든 C에 등록 :
는 나는이 같은 사용자 정의 핸들러를 작성하고 싶은 말은 .
그럴 수 있습니까?
동적 캐스트를 래핑하는 자체 동적 캐스트를 만들고 예외를 변환 할 수 있습니다. – Dani
포착하지 마십시오. try-and-cast를하고 싶다면'dynamic_cast'의 포인터 형식을 사용하고 캐스트 후에 null을 테스트하십시오. 그런 다음, 유형이 예상되는 경우 참조 양식을 사용하고, 'std :: bad_cast'는 프로그램에 버그가 있음을 나타내는 것입니다. 이 경우 프로그램을 멈추고 중지 시키길 원합니다. –
@Alexandre C .: 프로그램을 즉시 중지하는 것이 항상 선택 가능한 것은 아닙니다. 예외를 기록하고 다음 항목으로 진행하는 것이 더 나을 때가 있습니다. – sharptooth