Следующая функция ищет файл, и если он не может его найти, что-то вычисляет, а затем записывает в файл. По сути, это своего рода наивная система кеширования.
def get_result(param):
try:
result = get_file(param)
except FileNotFoundError:
result = compute_something(param)
save_to_file(result)
return result
Эта функция затем запрашивается из другой:
def do_something(param):
try:
my_result = get_result(param)
except Exception as e:
print("Exception happened: {}".format(e.__class__.__name__))
Теперь давайте попробуем, предполагая, что файл кэша еще не существует:
>>> do_something(my_param)
Exception happened: FileNotFoundError
Как получается, что FileNotFoundError
, будучи пойманным в get_result
, все еще всплывает в do_something
?