вот пример:
try:
self.lock.lockForWrite()
self.num[0] *= 5;
time.sleep(1.5)
self.num[0] /= 4;
finally:
self.lock.unlock()
try:
self.lock.lockForWrite()
self.num[0] *= 5;
time.sleep(1.5)
self.num[0] /= 4;
self.lock.unlock()
try:
self.lock.lockForWrite()
self.num[0] *= 5;
time.sleep(1.5)
self.num[0] /= 4;
finally:
self.lock.unlock()
try:
self.lock.lockForWrite()
self.num[0] *= 5;
time.sleep(1.5)
self.num[0] /= 4;
self.lock.unlock()
import sys
try:
try:
raise ValueError('wtf')
except TypeError:
pass
print('finally fail')
finally:
print('finally win')
finally win
Traceback (most recent call last):
File “C:\Python26\test.py”, line 4, in <module>
raise ValueError('wtf')
ValueError: wtf
Игнат
ну это не мой код, так для примера
получается finally используют тогда, когда лень писать блок except?
ведь если написать except - то после него код будет работать дальше
try:
code1
finally:
code2
try:
code1
except:
pass
code2
e = None
try:
code1
except Exception e:
pass
code2
if e: raise e
import sys
try:
sys.exit()
except SystemExit:
pass
try:
f = open('file', 'w')
# do something with file content
except:
print 'fail'
finally:
f.close()
from __future__ import with_statement
with open('file', 'w') as f:
"""do something with file content"""