dea*_*mon 7 python validation error-handling exception
我已经实现了一个小验证库,使用如下:
domain_object.validate()
# handle validation errors in some way ...
if domain_object.errors:
for error in domain_object.errors:
print(error)
Run Code Online (Sandbox Code Playgroud)
validate()执行检查并填充一个名为的列表errors.
我从其他验证库中知道,当验证执行失败时,它们会抛出异常.错误消息将作为异常属性传递.
什么方法更好?抛出验证异常是否有利?
不,我不认为验证方法应该抛出异常.
这会产生一些反模式,因为调用该方法的客户端代码会合理地期望抛出异常,然后需要捕获异常.由于通常建议不将异常用于流控制,为什么不返回指示验证是否成功的值.客户端代码可以检查返回值并相应地继续.
你基本上可以通过抛出异常来完成同样的事情,但是没有实际抛出异常的额外成本和糟糕的语义.
例外情况应该保留用于真正特殊的条件,而不是程序的正常运行.对我的验证失败似乎是一个非常正常的条件,在应用程序的日常操作期间可以预期.它可以通过调用代码轻松处理,并且正常操作将继续.通常情况下,例外情况并非如此.