我一直在阅读https://wiki.python.org/moin/HandlingExceptions和https://docs.python.org/2/tutorial/errors.html,但我不清楚以下几点:
让我说我有:
b = true
try:
statement1
statement2
statement3
except:
b = false
如果整个代码块无异常执行(我不想对错误进行分类),我希望变量bool保持为true,否则将其设为false。上面的代码会这样做吗?
答案 0 :(得分:3)
您拥有的代码会执行此操作,因为仅在触发<的情况下,才会重新分配bool
:
bool = true
try:
statement1
statement2
statement3
except: #Only enters if there is an exception
bool = false
示例1:
>>> bool = True
>>> try:
... raise ValueError
... except:
... bool = False
...
>>> bool
False
在示例1 中,bool
仅被修改,因为存在错误(raise
引发了异常)。
示例2:
>>> bool = True
>>> try:
... var = 0
... except:
... bool = False
...
>>> bool
True
>>>
在示例2 中,变量未已更改,因为没有异常,因此没有理由输入except
。
答案 1 :(得分:-1)
您将使用else
子句,该子句仅在未引发 的情况下执行。
try:
...
except ...:
flag = False
else:
flag = True
请注意,一般情况下,使用裸露的异常处理程序并不是一个好主意,因为你在这里完全可以解决异常问题。如果你想记录异常并重新提升它,那就是一个稍微不同的故事。