import random
def runner(job, maxtry=4):
for x in range(maxtry):
try:
job()
except Exception,e:
print(x, e)
else:
print('done', x)
return
def f():
if random.choice([True,False]):
print('yay')
else:
raise Exception('you craz')
print('======')
runner(f)
print('======')
runner(f)
print('======')
runner(f)
print('======')
runner(f)
aW1wb3J0IHJhbmRvbQoKZGVmIHJ1bm5lcihqb2IsIG1heHRyeT00KToKICAgIGZvciB4IGluIHJhbmdlKG1heHRyeSk6CiAgICAgICAgdHJ5OgogICAgICAgICAgICBqb2IoKQogICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sZToKICAgICAgICAgICAgcHJpbnQoeCwgZSkKICAgICAgICBlbHNlOgogICAgICAgICAgICBwcmludCgnZG9uZScsIHgpCiAgICAgICAgICAgIHJldHVybgoKZGVmIGYoKToKICAgIGlmIHJhbmRvbS5jaG9pY2UoW1RydWUsRmFsc2VdKToKICAgICAgICBwcmludCgneWF5JykKICAgIGVsc2U6CiAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCd5b3UgY3JheicpCgpwcmludCgnPT09PT09JykKcnVubmVyKGYpCnByaW50KCc9PT09PT0nKQpydW5uZXIoZikKcHJpbnQoJz09PT09PScpCnJ1bm5lcihmKQpwcmludCgnPT09PT09JykKcnVubmVyKGYp
======
yay
('done', 0)
======
(0, Exception('you craz',))
(1, Exception('you craz',))
(2, Exception('you craz',))
yay
('done', 3)
======
(0, Exception('you craz',))
yay
('done', 1)
======
yay
('done', 0)