Есть ли в Python функция "reason_exception ()"? - PullRequest
0 голосов
/ 23 июня 2009

У меня есть следующий код:

def causes_exception(lamb):
    try:
       lamb()
       return False
    except:
       return True

Мне было интересно, если он уже есть в какой-либо встроенной библиотеке?

/ YGA

Редактировать: Спасибо завсе комментарии.На самом деле невозможно определить, вызывает ли код исключение, не выполняя его - в противном случае вы можете решить проблему остановки (вызвать исключение, если программа останавливается).Я просто хотел синтаксически чистый способ отфильтровать набор идентификаторов для тех, в которых не было кода, кроме.

Ответы [ 3 ]

8 голосов
/ 23 июня 2009

Нет, насколько я знаю, в стандартной библиотеке такой функции нет. Как это будет полезно? Я имею в виду, вероятно, вы бы использовали это так:

if causes_exception(func):
    # do something
else:
    # do something else

Но вместо этого вы могли бы просто сделать

try:
    func()
except SomeException:
    # do something else
else:
    # do something
4 голосов
/ 23 июня 2009

В unittest есть модуль assertRaises(exception, callable), и это, пожалуй, единственное место, где такая проверка имеет смысл.

В обычном коде вы никогда не можете быть на 100% уверены, что causes_exception, который вы предложили, не вызывает никаких побочных эффектов.

2 голосов
/ 23 июня 2009

Мне неизвестна эта функция или что-то подобное в стандартной библиотеке Python.

Это довольно вводит в заблуждение - если бы я увидел, что он используется, я мог бы подумать, что он сказал вам без вызова функции , может ли функция вызвать исключение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...