Поймать все ошибки, кроме какой-либо
Допустим, мой иногда может предусмотрено в некоторых местах ловить ошибку отсутствия файла примерно так:
try:
with open('C:/python/test.txt', 'r') as f:
test = f.read()
print(test)
except FileNotFoundError:
print("файл не обнаружен")
Как в таком случае сделать отлов любых других ошибок во всём коде(исключая ещё некоторые нужные по коду исключения, к примеру exit)?
Если коротко, то я представляю это примерно так:
try:
#...
try:
with open('C:/python/test.txt', 'r') as f:
test = f.read()
print(test)
except FileNotFoundError:
print("файл не обнаружен")
#...
except all but no FileNotFoundError:
print("Опа! Неожиданная ошибка!")
Ответы (2 шт):
Автор решения: eri
→ Ссылка
try:
with open('C:/python/test.txt', 'r') as f:
test = f.read()
print(test)
except FileNotFoundError:
print("файл не обнаружен")
except:
print("остальныные ошибки")
Автор решения: Sasonit
→ Ссылка
Вдоволь покопавшись в англиском stake'е и документации except нашёл решение, которое походит лично мне:
import traceback
try:
a = int(input("Какое исключение попробуем?"))
if a == 1:
try:
with open('C:/python/test.txt', 'r') as f:
test = f.read()
print(test)
except FileNotFoundError:
print("файл не обнаружен")
elif a == 2:
print(empty_var)
except FileNotFoundError:
raise FileNotFoundError
except Exception:
print(traceback.format_exc())