Я написал сканера для извлечения информации из Q & Веб-сайт. Поскольку не все поля представлены на странице все время, я использовал несколько пробных исключений для обработки ситуации.Catch exception получает UnboundLocalError
def answerContentExtractor(loginSession, questionLinkQueue , answerContentList) :
while True:
URL = questionLinkQueue.get()
try:
response = loginSession.get(URL,timeout = MAX_WAIT_TIME)
raw_data = response.text
#These fields must exist, or something went wrong...
questionId = re.findall(REGEX,raw_data)[0]
answerId = re.findall(REGEX,raw_data)[0]
title = re.findall(REGEX,raw_data)[0]
except requests.exceptions.Timeout ,IndexError:
print >> sys.stderr, URL + " extraction error..."
questionLinkQueue.task_done()
continue
try:
questionInfo = re.findall(REGEX,raw_data)[0]
except IndexError:
questionInfo = ""
try:
answerContent = re.findall(REGEX,raw_data)[0]
except IndexError:
answerContent = ""
result = {
'questionId' : questionId,
'answerId' : answerId,
'title' : title,
'questionInfo' : questionInfo,
'answerContent': answerContent
}
answerContentList.append(result)
questionLinkQueue.task_done()
И этот код, иногда, может или не может, дает следующее исключение во время выполнения:
UnboundLocalError: local variable 'IndexError' referenced before assignment
Номер строки указывает ошибка происходит на втором except IndexError:
Спасибо всем за ваши предложения, хотел бы дать оценки, которые вы заслуживаете, слишком плохо, я могу отметить только один как правильный ответ ...
опечаток, я руку напечатал его полосатые некоторые ип - выделенные строки .. Отредактировано уже .. –
Связано: [несколько исключений в одной строке (кроме блока) ] (http://stackoverflow.com/questions/6470428/catch-multiple-exceptions-in-one-line-except-block?rq=1) – thefourtheye