COM 인터페이스를 통해 노출 된 수십 개의 개체가 있는데, 각각 수 많은 메서드가 포함 된 여러 메서드가 있습니다. 이러한 인터페이스는 내 앱에서 스크립팅 엔진으로 비즈니스 객체를 노출합니다.예외로부터 COM 인터페이스 보호
예외를 던져서 예외를 잡아서 (예외적으로 Google에 불가능하기 때문에 아무 문서도 찾을 수없는 COM의 Error()
함수를 사용하여 오류를 반환하기 위해) 이러한 모든 메서드 중 하나를 보호해야합니다. 내 이해를 위해,이 방법 중 하나의 배짱 주위에 try/catch를 추가해야합니다. catch 블록은이 수백 가지 방법 중 하나 하나에 대해 비슷하거나 비슷할 것입니다. 문제의 원인이 강하게 (DRY 원칙을 크게 위반 함) 있지만 모든 방법을 변경하지 않는 방법은 없습니다. 내가 알 수있는 한, 이러한 메소드는 COM에 의해 직접 호출되며, 예외를 잡기 위해 간섭 할 수있는 코드가 없습니다. 나의 현재의 최선의 아이디어는 catch 블록을위한 매크로를 만드는 것이지만, 그것은 자신의 종류의 코드 - 냄새가있다. 누구든지 더 나은 접근법을 제시 할 수 있습니까?
BTW, 내 응용 프로그램의 예외는 std :: 예외에서 파생되지 않으므로 표준 예외를 자동으로 처리하는 COM의 방법이 있으면 도움이되지 않습니다. 그리고 슬프게도 std :: exception에서 파생 된 기존 예외를 변경할 수 없습니다.
흥미로운 것처럼 보이지만,이 레거시 시스템에서는 사용하기에 엄청난 양의 작업이 될 것이라고 생각합니다. 내가 COM을 사용하는 새로운 시스템을 설계하는 불행을 겪었다면 계속 명심해야한다. – rmeador