Форум сайта python.su
и вообще, стоит ли на это обращать внимание, или клепать try/except где только можно?Вообще хороший вопрос. Может кто-то знает хороший подход/методику где надо использовать исключения а где нет? Я их использую постоянно, и это очень сильно “раздувает” код. Это при том, что я далеко не уверен что они везде нужны….
Офлайн
>>> import this
…
Errors should never pass silently.
Unless explicitly silenced.
…
Это - основное руководство. Так что первый способ обычно предпочтительней. Если есть вероятность, что ошибка может быть неявно проигнорирована - бросается исключение. Если это внутренняя часть библиотеки, скрытая от постороннего использования - можно работать с возвращаемыми значениями, выбрасывая исключение при пересечении границы подсистем (в публичном интерфейсе).
Офлайн
cybergrind
Я делаю как в первом примере - а потом в случае если ошибка требует верхнего вмешательства - генерю свою ошибку.
примерно так:
try:
#any error
except IOError, er:
if 'file read' in str(er): #известная ошибка
....
else: #известная ошибка, требующая обработки навреху
raise myexception, 'izvestnaja oshibka'
except:
raise myexception, 'neizvestnaja oshibka' #неизвестная ошибка
Отредактировано (Май 28, 2008 21:47:03)
Офлайн
Андрей СветловЯ, конечно, человек исключительный… Ни кто не спорит… :-)
v = ValueError(“ZZZ”)
raise v
Офлайн