LINUX.ORG.RU

python + exceptions


0

0

А вот как узнать возбуждает ли какая-нибудь функция исключение? В яве это было не сложнои просто если что-то исключение могло возбуждать (throws в спецификации) то ты просто обязан был окружить это дело try/catch. А как здесь? Например:

#!/usr/bin/env python

import re
re.compile("ble(")

И пока я не получу исключения sre_constants.error я вообще не узнаю о том что оно может быть возбуждено, не из help(re.compile), ниоткуда.. Ни даже отсюда: http://docs.python.org/lib/matching-searching.html

Как узнается о возбуждаемых исключениях функция в питоне?

Ответ на: комментарий от anonymous

Ну вот первый из бочки пример, с тем же re, получаем от юзера ввод и кормим его в re.compile, забываем что оно возбуждает exception и программа валится а могла бы просто проигнорировать.

Пример конечно высосан из пальца но.. Имхо было бы лучше если бы была спецификация в стиле

def wtf(): throws ...

Или хотя бы если бы в доках писали что конкретно возбуждает исключения а не как тут:

exception error
Exception raised when a string passed to one of the functions here is not a valid regular expression (for example, it might contain unmatched parentheses) or when some other error occurs during compilation or matching. It is never an error if a string contains no match for a pattern.

(c) http://docs.python.org/lib/node115.html

Слишком общо. Непонятно кто конкретно возбуждает и нужно догадываться.

dissident ★★
() автор топика
Ответ на: комментарий от dissident

> Имхо было бы лучше если бы была спецификация в стиле def wtf(): throws ...

Такие декларации ни разу не вписываются в идеологию Питона. Тем более, что Питон из них никакой пользы извлечь не сможет. Вся эта информация обычно пишется в docstring'е, а оттуда и в документацию автоматически попадёт.

> Или хотя бы если бы в доках писали что конкретно возбуждает исключения а не как тут

В процитированном Вами куске коротко и ясно сказано: если передать неправильный регэксп, возбуждается исключение re.error. Оно же может возбуждается при возникновении разных непонятных ошибок. В других случаях не возбуждается. Что непонятно-то? =)

ero-sennin ★★
()
Ответ на: комментарий от dissident

> Непонятно кто конкретно возбуждает и нужно догадываться.

Возбуждают все.

> def wtf(): throws ... 

Как мило! Посоветуйте, что кидает нижеследующая функция?

def my_map( func, lst ) :
  return [ func(x) for x in lst ]

watashiwa_daredeska ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.