我使用的 API 违反了里氏替换原则:它抛出自己的 Exception 类型,该类型扩展了 Exception,但将来自基类的异常消息放入新的 ErrorCode 字段中,并将其自己的(无用的)消息放入 Message 字段中。因此,为了显示正确的消息,我需要将 Exception 转换为 DerivedException 类型并使用 ErrorCode 字段。如果我将其视为 Exception 对象,则会收到错误消息。
现在,这在风格层面上让我很恼火,但它很容易解决:我可以捕获 DerivedException 并按照程序员的意图使用它。所以我的问题是:里氏原理有什么大不了的?人们使用违反原则的等级制度可能会遇到哪些实际问题?
一个实际的例子:
如果您有一个带有方法的日志记录类LogException(Exception ex)
它会记录您认为无用的消息,而不是“真实”消息。
日志方法的描述将从“记录异常消息”更改为“记录异常消息,但有时会记录无用的消息”。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)