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

时间:2018-04-26 11:38:42

标签: java exception

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

    1. 调用数据加载器并且加载程序执行验证,如果发现输入存在于DB中则发送布尔值为TRUE如果在DB中找不到输入则返回False。然后调用者获取此布尔值,如果为FALSE,则会抛出异常,抱怨错误消息中的错误原因。
    1. 调用数据加载器并且加载程序执行验证,如果未找到该值,则抛出自定义异常,提供错误消息中的详细信息。来电者最终抓住它,包裹它并重新抛出它。在这里"提早赶上"原则可以遵循。

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

1 个答案:

答案 0 :(得分:0)

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