Почему/как это создает, казалось бы, бесконечный цикл? Неправильно я предположил, что это вызовет некоторую форму ошибки типа переполнения стека.
i = 0
def foo () :
global i
i += 1
try :
foo()
except RuntimeError :
# This call recursively goes off toward infinity, apparently.
foo()
foo()
print i