【问题标题】:urllib2 ProxyHandler - handling refused connections [duplicate]urllib2 ProxyHandler - 处理拒绝的连接[重复]
【发布时间】:2014-03-12 06:09:20
【问题描述】:

我正在使用带有 http 代理的 urllib2 下载图像。

有没有办法处理连接问题/异常?例如,如果代理关闭或连接被拒绝。

这是我的代码:

proxy = urllib2.ProxyHandler({'http': '127.0.0.1:4040'})
opener = urllib2.build_opener(proxy)
urllib2.install_opener(opener)
download_image = urllib2.urlopen(image_url)

【问题讨论】:

  • 你是在问如何在 Python 中使用try: / except:
  • @tripleee 有点像。我是 python 新手。我只是不确定如何准确地确定连接问题(而不是 404 或其他错误类型)。 build_opener 和 install_opener 似乎没有抛出任何异常,只是 urlopen。

标签: python urllib2


【解决方案1】:

当指定 try: except: 时,您可以在 except: 中指定要检查的特定错误:例如

text = 'Put anything here'
try:
    val = int(text)
except ValuError:
    print 'text was not an integer'

请注意,引发的任何其他错误都将通过常规系统处理传递和处理。

在您的情况下,您将使用异常来获取 urlopen 引发的错误。

Python Exceptions Handling

语法:这里是 try....except...else 块的简单语法:

try:你在这里做你的操作; ......................
except ExceptionI:如果有ExceptionI,则执行此块。
except ExceptionII:如果有ExceptionII,则执行此块。
else: 如果没有异常则执行此块。

以下是关于上述几点的要点 语法:

一个try 语句可以有多个except 语句。这是 当 try 块包含可能抛出不同的语句时很有用 异常类型。

您还可以提供一个通用的 except 子句,它处理任何 例外。

在 except 子句之后,您可以包含 else 子句。编码 如果 try: 块中的代码不执行,则执行 else 块中的 引发异常。

else 块是放置不需要 try 的代码的好地方: 块的保护。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-21
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-28
    • 2012-12-04
    • 2020-04-14
    相关资源
    最近更新 更多