这行吗?
try:
try:
field.value = filter(field.value, fields=self.fields, form=self, field=field)
except TypeError:
field.value = filter(field.value)
except ValidationError, e:
field.errors += e.args
field.value = revert
valid = False
break
也就是说,如果第一行抛出一个ValidationError
,第二行会捕获它吗?
我本可以不嵌套地编写它,但第二个filter语句也可能失败!我想使用相同的ValidationError
块来捕获它。
我会自己测试它,但现在这段代码是如此的交织,很难正确地绊倒它:)
顺便说一句,依赖它捕获TypeError
并只传入一个arg是否不好?i、 故意省略一些不需要的论点?
要称赞Brent's answer,并测试另一个案例:
打印内容:
如果内部try中的filter语句引发异常,首先将对照内部的“except”语句集对其进行检查,然后如果没有一个语句捕获它,则将对照外部的“except”语句集对其进行检查。
你可以通过做这样简单的事情来说服自己(这只会打印“捕捉到值错误”):
另一个例子是,这个应该只打印“捕获内部值错误”:
相关问题 更多 >
编程相关推荐