这会有用吗?
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
Run Code Online (Sandbox Code Playgroud)
也就是说,如果第一行抛出一个ValidationError
,第二行会except
抓住它吗?
我会把它写成非嵌套的,但第二个过滤语句也会失败!而且我想使用相同的ValidationError
块来捕获它.
我自己测试一下,但这段代码交织在一起很难正确地绊倒它:)
作为旁注,依靠它来捕捉TypeError
和传递只有一个arg是不是很糟糕?即故意省略一些不需要它们的论据?
Bre*_*ode 21
如果内部try中的filter语句引发异常,它将首先针对内部"except"语句集进行检查,然后如果没有捕获它,则将根据外部"except"语句集进行检查.
你可以通过做这样简单的事情来说服自己就是这种情况(这只会打印"捕获值错误"):
try:
try:
raise ValueError('1')
except TypeError:
print 'Caught the type error'
except ValueError:
print 'Caught the value error!'
Run Code Online (Sandbox Code Playgroud)
作为另一个例子,这个应该只打印"抓住内部ValueError":
try:
try:
raise ValueError('1')
except TypeError:
pass
except ValueError:
print 'Caught the inner ValueError!'
except ValueError:
print 'Caught the outer value error!'
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16325 次 |
最近记录: |