我正在使用一个违反Liskov替换原则的API:它抛出扩展Exception的自己的Exception类型,但将基类的异常消息放在新的ErrorCode字段中,并将其自己(无用)的消息放在Message字段中。因此,要显示正确的消息,我需要将Exception强制转换为DerivedException类型并使用ErrorCode字段。如果我将其视为Exception对象,则会得到错误的消息。
现在,这让我感到不舒服,但很容易解决:我只需捕获DerivedException并按程序员的意图使用即可。因此,我的问题是:Liskov原则有什么大不了的?违反该原则的层次结构可能会遇到哪些实际问题?
现在,这让我感到不舒服,但很容易解决:我只需捕获DerivedException并按程序员的意图使用即可。因此,我的问题是:Liskov原则有什么大不了的?违反该原则的层次结构可能会遇到哪些实际问题?
throw new DerivedEx("message", originalEx)
?这很糟糕,这就是你需要强制转换的原因。请要求API的开发人员修复此问题。请要求他们阅读框架设计准则。 - Steven