Какой HRESULT возвращать, когда класс не реализует метод по какой-либо причине проектирования?

#windows #visual-c #com #error-handling

#Windows #visual-c #com #обработка ошибок

Вопрос:

Предположим, у меня не очень хорошо спроектированный COM-интерфейс, и некоторые классы просто логически не могут реализовать один из его методов.

Например, есть такой метод, как Explode() и многие классы просто не могут разумно «взорваться», но все равно должны реализовать этот метод и должны вернуть соответствующий код ошибки.

Возвращаюсь ли я E_NOTIMPL в таких случаях? Для меня этот код означает «еще не реализовано, проверьте еще раз в версии 2.0″. Следует ли его также использовать, когда метод постоянно не реализуется классом по какой-либо серьезной причине проектирования?

Ответ №1:

Вы, конечно, могли бы добавить свой собственный HRESULT для этого, но, на мой взгляд, возврат E_NOTIMPL в этом случае вполне допустим. Насколько я понимаю, это никогда не E_NOTIMPL подразумевало намерение реализовать на более позднем этапе.