首页 文章

抛出异常然后传播或返回布尔值然后抛出异常?

提问于
浏览
0

我有一个收集信息的服务,然后通过数据加载器服务将数据上传到数据库 . 现在在数据加载器中,在数据加载发生之前验证输入 . 从以下两种方法,哪一种更好,应该作为最佳做法?

  • 调用数据加载器和加载程序进行验证,如果发现输入存在于DB中则发送布尔为TRUE,如果在DB中未找到输入则返回False . 然后调用者获取此布尔值,如果为FALSE,则会抛出异常,抱怨错误消息中的错误原因 .

  • 调用数据加载器和加载程序进行验证,如果找不到值,则抛出自定义异常,提供错误消息中的详细信息 . 呼叫者最终 grab 它,包裹它并重新抛出它 . 这里可以遵循"throw early catch late"原则 .

哪种方法正确?我更喜欢2,因为它可以避免在这里检查一个条件 . 我使用的语言是Java 8

1 回答

  • 0

    通常,会有一个Validator类来执行验证,并在验证/条件失败时抛出异常 . 但是我已经看到了Validator有类似isValid方法的模式,它返回一个布尔值 . 如果你想快速失败,请使用第一种方法 . 但是,如果有多个验证并且您希望收集所有验证失败以提供详细的异常,请使用第二种方法 .

相关问题