Вы должны будете сделать это отдельныхtry
блоков:
try:
code a
except ExplicitException:
pass
try:
code b
except ExplicitException:
try:
code c
except ExplicitException:
try:
code d
except ExplicitException:
pass
Это предполагает, что вы хотите запустить code c
только если code b
не удался.
Если вам нужно запустить code c
независимо, вы должны поместить try
блоки один за другим:
try:
code a
except ExplicitException:
pass
try:
code b
except ExplicitException:
pass
try:
code c
except ExplicitException:
pass
try:
code d
except ExplicitException:
pass
Я использую except ExplicitException
здесь, потому что это никогда не хорошая практика, чтобы слепо игнорировать все исключения. Вы будете игнорировать MemoryError
, KeyboardInterrupt
и SystemExit
, а также в противном случае, которые вы обычно не хотите игнорировать или перехватывать без какого-либо повторного рейза или осознанной причины для их обработки.
Чтобы быть явным, вы хотите 'код c' для выполнения * только тогда, когда код b вызывает исключение *? –
Все коды должны запускаться в одном блоке try, даже если они создают исключение. – arvidurs
Этого не может быть. Блока 'try' не существует для исключения исключений во всем исполняемом коде. Это позволит вам * catch * исключение, когда это произойдет, но остальная часть блока никогда не выполняется. –