В следующем примере я хотел бы иметь возможность вызвать функцию b()
из a()
, а для a()
распознать, что IndexError
произошло в b()
.
def a():
try:
b()
except IndexError:
print('Caught the error in a!')
def b():
array = ["First", "Second"]
try:
print(array[2])
except IndexError:
print('Caught the error in b!')
a()
Вывод этого скрипта выглядит следующим образом:
Caught the error in b!
Я хотел бы увидеть, как этот скрипт может вывести следующее:
Caught the error in b!
Caught the error in a!
Я бы очень хотелпредпочитаю ответ с ограничением, что в функцию a()
вносятся изменения только для конкретного сценария реального мира, с которым я на самом деле имею дело, но приму другой ответ, если это невозможно.
My(неверно) интуиция предполагает, что сценарий просто завершается после того, как исключение перехвачено в b()
, но следующий пример доказывает, что это не так:
def a():
try:
b()
except IndexError:
print('Caught the error in a!')
print('Both chances are over now.')
def b():
array = ["First", "Second"]
try:
print(array[2])
except IndexError:
print('Caught the error in b!')
a()
Этот сценарий выведет следующее:
Caught the error in b!
Both chances are over now.
Что доказывает мне, что функция a()
продолжит выполняться после возникновения исключения IndexError
в b()
.