Иерархия нарушает Лисков - ну и что?

Я использую API, который нарушает принцип подстановки Лискова: он генерирует собственный тип исключения, расширяющий исключение, но помещает сообщение об исключении из базового класса в новое поле ErrorCode и помещает собственное (бесполезное) сообщение в поле сообщения. Поэтому для отображения правильного сообщения мне нужно привести исключение к типу DerivedException и использовать поле ErrorCode. Если я рассматриваю его как объект Exception, я получаю неправильное сообщение.

Теперь это раздражает меня на стилистическом уровне, но это достаточно легко обойти: я могу просто поймать DerivedException и использовать его так, как задумал программист. Итак, у меня такой вопрос: что такого особенного в принципе Лискова? С какими практическими проблемами могут столкнуться люди, использующие иерархии, нарушающие этот принцип?

7
задан Aidan 4 August 2011 в 08:06
поделиться