【问题标题】:Python, logging lines that cause an exceptionPython,记录导致异常的行
【发布时间】:2011-11-09 15:14:10
【问题描述】:

我昨天用 Python 编写了一个程序,它检查数百个 URL 的有效性(它们主要不会 404),但是目前当我的程序运行到一个无效的 URL 时,它会抛出许多异常然后崩溃。我正在使用 urllib.urlopen 访问链接。无论如何,我的程序是否可以忽略这些异常并继续运行,但在某处记录导致问题的代码行?

【问题讨论】:

  • 您看到了哪些异常?根据我的经验,当urlopen 调用失败时,你会得到很长的堆栈跟踪,但你只需要捕获最底部的一个。或者不同的 URL 有几个不同的例外?显示你得到的堆栈跟踪。
  • 另见this question

标签: python url exception lines


【解决方案1】:

您可以使用Logger.exception() 方法。例如:

LOGGER = logging.getLogger("my_logger_name")
for my_url in urls_to_test:
   try:
       #test your url
   except Exception:   # or BaseException if you really want to catch all python exceptions
      LOGGER.exception("something weird happened") 

这将显示引发异常的 url 的回溯,并且仍然继续测试另一个 URL。

【讨论】:

  • 我给了你一个 +1,但如果你没有裸体 except:,我会更开心。即使except Exception: 也会有所改进,但越具体越好。
【解决方案2】:

您应该查看logging 模块,它可以做到这一点并且具有一些非常有用的功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-02-20
    • 2018-04-10
    • 2019-04-16
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 2019-04-09
    相关资源
    最近更新 更多