2013-11-20 1 views
1

я получаю сообщение об ошибке (затемненный путь, который немного):Python - AttributeError - Как правильно заставить использовать существующие исключения

ERROR: (AttributeError) 'NoneType' object has no attribute 'group' 
Traceback (most recent call last): 
    File "/home/user/nananana/nananana/batman.py", line 168, in main 
    url = result.group(1) 
AttributeError: 'NoneType' object has no attribute 'group' 

Код часть выглядит следующим образом:

result = re.search('(http.*?.+txt)',url) 
url = result.group(1) 

Так , Я получаю строку, содержащую URL-адрес. Я пытаюсь извлечь URL-адрес, начинающийся с http ort https, и заканчивается на .txt с хотя бы одним символом или - или _ или. между.

Проблема в том, что иногда я получаю вышеуказанную ошибку. Я предполагаю, что это означает, что re.search не увенчался успехом. Могу ли я каким-то образом спросить, возможен ли result.group(), и если он не позволяет запустить его в одно из моих стандартных исключений? Последняя часть здесь является ключевым вопросом.

except: 
    status = 'error' 
    submitError2DB(db, fullurl, status, host, ip, txtname) 
    print "\tAn unknown error occured. Fix needed.\nFailed.\n" 

Я только нашел блестящий пример просто сделать:

raise Exception("I know python!") 

, но это просто не то, что мне нужно.

+1

Было бы проще и проще просто проверить, является ли 'result'' None'. –

ответ

2

Вы можете проверить, если результат не является ни один, как этот

if result is not None: 
    url = result.group(1) 
else: 
    raise Exception("No match") 

В ваших словах, если результат не является None, result.group возможно, в противном случае исключение с текстом No match будет поднят.

+0

Блестящий! Но как я могу перенаправить его в мое уже существующее исключение и позволить ему продолжить со следующим msg (следующая строка для проверки URL-адреса)? – Jasi

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