一个简单的,我有兴趣了解您的想法:
使用您的存储库实现,您喜欢让异常在存储库中引发并将异常处理留给调用者,还是您更喜欢在存储库中捕获异常、存储异常并返回 false/null?
一个简单的,我有兴趣了解您的想法:
使用您的存储库实现,您喜欢让异常在存储库中引发并将异常处理留给调用者,还是您更喜欢在存储库中捕获异常、存储异常并返回 false/null?
这取决于。
我会让异常冒泡吗?绝对地。但我想要这个用于连接失败、命令失败。无论你做什么,不要只是隐藏这些,你需要了解它们。我希望我的应用程序尽快失败,以减少副作用和进一步的损害。
我也记录异常。我使用 Log4net 来帮助解决这个问题。但我喜欢在源头记录异常。我会让他们从那里冒泡。
返回空?如果找不到某些东西(即通过 id 查找某些东西但它不存在),那么我返回 null,而不是异常。但是在某些情况下,当这种情况发生时,我会看到抛出一个新的异常。
要点:例外应该是“例外”,而不是规则。如果抛出异常,那应该是因为确实有问题,你需要修复它。
我通常会让异常泄漏,但如果我特别有企业精神,我会将它们包装在 RepositoryException 中,以防止客户关心底层存储引擎。
我永远不会返回 false/null 而不是异常,因为这些值背后已经有含义。
在极少数情况下,您可能有一个脑死亡的存储引擎,它会在非异常情况下生成异常——我会捕获那些特定的并在适当的时候返回 null(例如,如果一行不存在,但存储引擎抛出这种情况下的错误-我会抓住它并返回null)。