Вложенные вызовы в Python - мне нужно попробовать, кроме как внутри всех функций? - PullRequest
0 голосов
/ 11 марта 2019

Я нахожусь в процессе изучения Python: кроме пункта

У меня есть следующая иерархия вызовов

def A():
     try:
         B(some_args)
     except Exception as e:
         print (repr(e))

B реализована следующим образом

def B(some_args):
    C(some_args)

Примечаниечто нет попытки, кроме как внутри BI есть попытка, кроме как внутри C, как показано ниже

def C():
     try:
         dothis()
     except exception as e:
         raise e

Мой вопрос заключается в том, что если одна из функций в иерархии вызовов (в данном случае B)

A()
    calls B()
        calls C()

не имеет попытки, кроме предложения, получит ли A по-прежнему исключение, вызванное в C ()?

1 Ответ

1 голос
/ 11 марта 2019

Да, было бы.Блок try / catch поймает любое исключение, выброшенное внутри блока try, независимо от того, насколько глубоко находится место, куда он был брошен.

Кроме того, вы можете ловить определенные исключения на различных уровнях,так что может случиться так, что блок catch в B может перехватить одно выброшенное исключение, в то время как блок catch в A перехватит другое исключение, каждое из которых может быть вызвано в C или даже какой-то другой функции, вызываемой C, и т. д. Например:

catch FileNotFoundException as ex:

будет перехватывать исключение FileNotFoundException, но не другие исключения

...