ошибка во время выполнения Python, можно ли создать дамп файла?

StackOverflow https://stackoverflow.com/questions/550804

  •  23-08-2019
  •  | 
  •  

Вопрос

Я использую libcurl для расширения веб-страницы, затем сканирую ее на наличие данных и делаю что-то с одной из ссылок.Однако время от времени страница отличается от i, за исключением того, что таким образом я извлекаю неверные данные, и pycurl выдает исключение.Я попытался найти имя исключения для pycurl, но безуспешно.

Есть ли способ, которым я могу получить обратную трассировку для выполнения функции, чтобы я мог сбросить файл, чтобы я мог посмотреть на входные данные файла и увидеть, был ли мой код ошибочным?

Это было полезно?

Решение

системный.excepthook может помочь вам здесь, где вы можете установить глобальный обработчик исключений.Я не уверен, как обрабатываются исключения pycurl, поскольку это библиотека привязки, но, вероятно, будет полезно переназначить ее в универсальную функцию.Что - то вроде:

>>> import sys
>>> 
>>> def my_global_exception_handler(type, value, traceback):
...     print traceback
...     sys.exit()
... 
>>> sys.excepthook = my_global_exception_handler
>>> raise
<traceback object at 0xb7cfcaa4>

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

Другие советы

Вы можете использовать общий обработчик исключений.

logging.basicConfig( file="someFile.log", level=logging.DEBUG )
logger= logging.getLogger( __name__ )
try:
    curl = pycurl.Curl()
    curl.setopt(pycurl.URL, url)
    # etc.
    curl.perform()
    curl.close
    logger.info( "Read %s", url )
except Exception, e:
    logger.exception( e )
    print e, repr(e), e.message, e.args
    raise
logging.shutdown()

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

Можете ли вы перехватить все исключения где-нибудь в главном блоке и использовать sys.exc_info() для получения информации об обратном вызове и записать это в свой файл.exc_info() возвращает не только тип исключения, но и обратный вызов, поэтому должна быть информация о том, что пошло не так.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top