Я только начинаю узнавать об обработке исключений try-catch в python и решил реализовать ее в моей программе, которая записывает базовый xml-файл с использованием lxml etree.
У меня есть функция, которая в настоящее время принимаетв двух списках и файле.Где элементы списка записываются как аргументы .text
для файла xml.
def foo(list1,list2,path/to/file):
...#do some stuff here
try:
tree = etree.Parse(path/to/file)
except OSError as osErr:
print('Error in parsing file. File or directory may not exist or is corrupted')
raise
...#do some stuff again
for i,cnt in enumerate(list1):
SomeSubelement.txt = cnt
try:
AnotherSubelement.txt = list2[i]
except IndexError as indxErr:
print(indxErr)
raise
И в моей основной функции я реализовал обработку, если файл или каталог недопустимы другой попыткой, кромеblock.
#main
from pathlib import Path
while True:
Pathtofile = input('Enter file directory: ')
if not Pathtofile:
Pathtofile = 'default_path/to/file'
try:
AbsPathtofile = Pathtofile.resolve(strict=true)
except FileNotFoundError as fnfErr:
print('Invalid Path',fnfErr)
else:
break
#Do more stuff
try:
foo(list1,list2,Pathtofile)
except IndexError as indxErr:
#Do error handling
except OSError as osErr:
#Handle this error
То, что я должен делать, но я не уверен в том, чтобы полностью удалить блок try-исключения внутри функции, поскольку у меня есть обработчик более высокого уровня внутри main.Это более подходящий способ?Теперь я просто повторно поднял исключения, чтобы создать пузырек в стеке вызовов.Я читал, что эмпирическое правило заключается в обработке исключений, где оно может быть обработано, но я все еще не понимаю, где это поставить.Спасибо.