2009-05-21 125 views

回答

3

这取决于。

我是否让异常冒泡?绝对。但我想要这个连接失败,命令失败。无论你做什么,不要只隐藏这些,你需要了解它们。我更喜欢我的应用程序尽快失败,以减少副作用和进一步损坏。

我也记录异常。我使用Log4net来解决这个问题。但我喜欢在源代码处记录异常。我会让他们从那里冒出来。

返回null?如果找不到任何东西(即通过id查找某个东西并且它不在那里),那么我返回null,而不是一个例外。但有些情况下,我发现这种情况发生时会抛出新的异常。

要点:例外应该是“例外”,而不是规则。如果抛出异常,应该是因为有些事情是错误的,你需要修复它。

+0

我认为您的主要观点非常有效。 +1 – 2009-05-21 20:16:56

0

我通常会让异常泄漏,但如果我处于特别Enterprisey的情绪中,我会将它们包装在RepositoryException中以防止客户端关心底层存储引擎。

我永远不会返回false/null而不是异常,因为这些值背后已经有了一个含义。在极少数情况下,你可能有一个大脑死亡的存储引擎,它会在非例外情​​况下产生异常 - 我会捕获那些具体的异常并在适当的情况下返回null(例如,如果行不存在,但是存储引擎在这种情况下抛出一个错误 - 我会捕获它并返回null)。

+0

是的,我和你一起只会发现与非例外情况有关的错误。我想到,如果我在存储库中捕获异常并返回false,我所做的只是强迫自己记住将错误捕获到存储库之外,最终在用户体验中最终会达到同样的效果。 (假设我正在捕捉错误并优雅地失败) – 2009-05-21 20:19:31