библиотека python urllib2 простой обработчик ошибок http_error_default - PullRequest
1 голос
/ 15 марта 2012

Вот так выглядит мой класс:

class ExtHTTPErrorProcessor (urllib2.BaseHandler):

def http_error_default(self, req, fp, code, msg, hdrs):
    print code
    return res
...
...
opener = urllib2.build_opener(ExtHTTPErrorProcessor())
urllib2.install_opener(opener)
urllib2.urlopen(request, data)

Все, что он делает, это обрабатывает весь код ошибки.Я точно придерживаюсь формата из документации: http://docs.python.org/library/urllib2.html#urllib2.BaseHandler.http_error_default Когда приходит код ошибки 400, он вообще не вызывает мой http_error_default, он вызывает тот, который находится внутри urllib2.Файл "/usr/local/lib/python2.7/urllib2.py", строка 521, в http_error_default поднять HTTPError (req.get_full_url (), код, msg, hdrs, fp) urllib2.HTTPError: Ошибка HTTP 400: неверный запрос

Я попытался добавить метод http_error_400, затем будет вызван этот метод, но мне действительно нужен http_error_default.Мне действительно нужен вариант по умолчанию.

1 Ответ

1 голос
/ 16 марта 2012

Согласно этой смутной старой теме вы должны указать явные обработчики в "Fancy" URL Opener ... Я придерживаюсь моего простого рабочего решения . Просто добавьте попытку ... кроме блока.

...