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