Безопасно ли удалять переменные sys.last_ *

Как видно из 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)
    }
  )

1
задан martineau 15 January 2019 в 21:58
поделиться

1 ответ

Да, вы можете безопасно del эти атрибуты. Однако:

После каждого вызова я хочу проверить, не произошло ли исключение ...

В этом случае вам, вероятно, следует настроить свой код так, чтобы он смотрел прямо на 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.

Из документов:

Эта функция нужна только в только несколько непонятных ситуаций. К ним относятся системы регистрации и обработки ошибок, которые сообщают информацию о последнем или текущем исключении. Эта функция также может быть использована для освобождения ресурсов и запуска финализации объекта, хотя нет никаких гарантий относительно того, какие объекты будут освобождены, если таковые имеются.

Он был удален в изменениях библиотеки Python 3.0:

https://docs.python.org/3/whatsnew/3.0.html#library-changes [ 1116]

0
ответ дан wim 15 January 2019 в 21:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: