2009-06-23 3 views
0

У меня есть следующий код:Имеет ли python функцию "cause_exception()"?

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

мне было интересно, если он пришел уже в какой-либо встроенный в библиотеке?

/YGA

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

ответ

2

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

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

+0

Согласен. Не то, чтобы я когда-либо сталкивался с таким методом. – Josiah

8

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

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

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

try: 
    func() 
except SomeException: 
    # do something else 
else: 
    # do something 
4

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

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

Смежные вопросы