Как видно из https://gist.github.com/miguelmota/9946206 :
Оба запроса и запроса-обещания обрабатывают его из коробки по состоянию на декабрь 2017 года :
var request = require('request')
request(
{ method: 'GET'
, uri: 'http://www.google.com'
, gzip: true
}
, function (error, response, body) {
// body is the decompressed response body
console.log('server encoded the data as: ' + (response.headers['content-encoding'] || 'identity'))
console.log('the decoded data is: ' + body)
}
)
Да, вы можете безопасно del
эти атрибуты. Однако:
После каждого вызова я хочу проверить, не произошло ли исключение ...
blockquote>В этом случае вам, вероятно, следует настроить свой код так, чтобы он смотрел прямо на
sys.exc_info()
.last_type
,last_value
иlast_traceback
являются просто побочными эффектами необработанного исключения - и они предназначены для использования в интерактивном сеансе, а не для управления потоком.Существуют законные варианты использования для очистки информации о последнем исключении. Настолько, что в Python 2 была вспомогательная функция для этого:
>>> print(sys.exc_clear.__doc__) exc_clear() -> None Clear global information on the current exception. Subsequent calls to exc_info() will return (None,None,None) until another exception is raised in the current thread or the execution stack returns to a frame where another exception is being handled.
Из документов:
Эта функция нужна только в только несколько непонятных ситуаций. К ним относятся системы регистрации и обработки ошибок, которые сообщают информацию о последнем или текущем исключении. Эта функция также может быть использована для освобождения ресурсов и запуска финализации объекта, хотя нет никаких гарантий относительно того, какие объекты будут освобождены, если таковые имеются.
blockquote>Он был удален в изменениях библиотеки Python 3.0:
https://docs.python.org/3/whatsnew/3.0.html#library-changes [ 1116]