Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 26, 2009 14:15:27

eki-attar
От:
Зарегистрирован: 2009-06-29
Сообщения: 11
Репутация: +  0  -
Профиль   Отправить e-mail  

Как автоматизировать обработку исключений?

Если во время чтения, например, отвалится sshfs, должна произойти IOError в цикле. Как можно корректно обработать такое исключение, и вынести в функцию, чтобы не повторять такой код?

Я сделал себе функцию-обёртку, которая обрабатывает IOError при открытии файла, чтобы выводить читабельное сообщение об ошибке. Но файлы я считываю по-разному и не могу вынести это в функцию (в некоторых случаях весь файл считать невозможно, это может быть не нужно, либо файл большой. В других случаях надо пройти весь файл).

def safe_open(*args):
try:
return open(*args)
except IOError:
sys.exit('Error when opening file \'{0}\'. Error #{1[0]}: {1[1]}'.format(\
args[0], sys.exc_info()[1].args))
...

with safe_open(myfile, 'r') as f:
for i in f:
print i

with safe_open(anotherfile, 'r') as f:
try:
conf = ''.join(f).format(**args)
except KeyError:
quit('\nOops, your template \'{0}\' has placeholders for parameters\nthat were not supplied in the command line: - {1}\n\nCan\'t proceed. Ending. Nothing has been changed yet.'.format(args['host_template'], '\n - '.join(sys.exc_info()[1].args)), 1)



Отредактировано (Окт. 26, 2009 14:18:11)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version