함수 서명에서 "Throw"의 위험
함수 서명에 "throw" 키워드를 통합하고 싶은 유혹이 있을 수 있지만 예외 가능성을 명시적으로 선언하는 경우에는 이 방식을 사용하지 않는 것이 좋습니다. 목적은 간단해 보이지만 이 접근 방식이 좋지 않은 선택으로 간주되는 데에는 몇 가지 기술적인 이유가 있습니다.
컴파일러 제한 사항
한 가지 중요한 문제는 컴파일러가 적용할 수 없는 방식에서 발생합니다. 함수 서명에 선언된 예외 사양. 결과적으로 컴파일러는 함수가 실제로 지정된 예외를 발생시키는지 확인할 수 없습니다. 이는 함수가 실제로 다른 예외를 발생시키거나 전혀 발생하지 않을 수 있기 때문에 잠재적으로 잘못된 서명을 초래할 수 있습니다.
런타임 비효율성
예외 사양은 런타임 중에 확인되어 성능 오버헤드. 이는 컴파일 타임에 이러한 검사를 보다 효율적으로 수행하는 최신 예외 처리 메커니즘과 비교할 때 특히 바람직하지 않습니다.
일관되지 않은 구현
예외 사양은 서로 다른 수준에서 다양한 지원 수준을 갖습니다. 컴파일러. 예를 들어, MSVC는 예외가 발생하지 않는다는 보장으로 해석되는 "throw()"의 특수한 경우를 제외하고 예외 사양을 대부분 무시합니다. 이러한 불일치로 인해 플랫폼별 문제가 발생하고 이식성이 복잡해집니다.
예외 사양에 대한 대안
함수 시그니처에서 "throw"를 사용하는 데 따른 단점을 고려하여 다음을 채택하는 것이 좋습니다. 예외 처리를 위한 대체 접근 방식. 여기에는 다음이 포함됩니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3