zne*_*eak 10 language-agnostic oop exception
我渐渐明白,我从来没有见过创建子类,但追赶的父类是真正有用的(除,当然,对于基本异常类,对于这一个单一的异常层次结构有处导出).
异常层次结构是否真的有用,xor是否应该从语言的基本异常类派生所有异常?
当您需要在不同位置捕获不同粒度时,异常层次结构对于将相关异常分组在一起非常有用.
将所有应用程序异常放在一个地方是最常见的用例.这允许您捕获MyAppException
任何想要捕获来自应用程序的所有错误的时间,但在适当时仍捕获更具体的异常.(在.NET中,ApplicationException
该类是为此而设的,但由于各种原因它已被弃用.)
但是,您也可以在模块边界处或以任何其他有意义的方式将异常分组.使用FooModuleException
从未来例外Foo
模块,但捕捉和处理FooModuleMustFrobnicate
专门的内部Foo
.或任何等效的情况.
我在不同的时间使用了所有这些模式.