Повторно вызвать HTTPError с дополнительной информацией

Я хочу поймать urllib2.HTTPError с дополнительной информацией, если это 404:

try:
    data = urlopen(url)
except HTTPError, e:  # Python 2.5 syntax
    if e.code == 404:
        raise HTTPError('data not found on remote')
    else:
        raise

, но это не работает, потому что инициализация HTTPError принимает несколько недокументированных аргументов. Если это действительно сработало, то будет потеряна трассировка и исходное сообщение. Я также пробовал

if e.code == 404:
    e.message = 'data not found on remote: %s' % e.message
raise

, но это просто повторно вызвало исключение без дополнительной информации. Что мне делать?

5
задан Fred Foo 30 May 2011 в 09:37
поделиться