检查命令在Python中是否有问题?

检查命令在Python中是否有问题?,python,Python,我有这个命令 h = urllib.urlopen("http://google.com/") 我如何检查它是否检索到了一些错误、网络中断或我不期望的东西 比如说 如果错误 打印“错误” 谢谢你urllib.urlopen被弃用,因为它在Python 3.0中被删除了。请改为使用,并在文档中注明: 对错误提出质疑 我们也要这样做: try: h = urllib2.urlopen("http://google.com/") except urllib2.URLErr

我有这个命令

h = urllib.urlopen("http://google.com/")
我如何检查它是否检索到了一些错误、网络中断或我不期望的东西

比如说

如果错误 打印“错误”


谢谢你

urllib.urlopen
被弃用,因为它在Python 3.0中被删除了。请改为使用,并在文档中注明:

对错误提出质疑

我们也要这样做:

try:
    h = urllib2.urlopen("http://google.com/")
except urllib2.URLError as e:
    # do something with the exception e.g.
    print 'Error:', e.reason
或者只是一条(无意义的)错误消息:

try:
    h = urllib2.urlopen("http://google.com/")
except urllib2.URLError:
    print 'An error occurred.'

URLError

异常urllib2.URLError

处理程序在遇到问题时引发此异常(或派生异常)。它是的一个子类

原因
此错误的原因。它可以是消息字符串或其他异常实例(对于远程URL,对于本地URL)



您可能想了解一下。

urllib.urlopen
已被弃用,因为它已在Python 3.0中删除。请改为使用,并在文档中注明:

对错误提出质疑

我们也要这样做:

try:
    h = urllib2.urlopen("http://google.com/")
except urllib2.URLError as e:
    # do something with the exception e.g.
    print 'Error:', e.reason
或者只是一条(无意义的)错误消息:

try:
    h = urllib2.urlopen("http://google.com/")
except urllib2.URLError:
    print 'An error occurred.'

URLError

异常urllib2.URLError

处理程序在遇到问题时引发此异常(或派生异常)。它是的一个子类

原因
此错误的原因。它可以是消息字符串或其他异常实例(对于远程URL,对于本地URL)



您可能需要阅读。

我相信错误时会引发异常。如果您捕捉到这一点并使用错误代码,您可以轻松地进行适当的错误处理。

我相信错误时会引发异常。如果捕捉到该错误并使用错误代码,您可以轻松地执行相应的错误处理。

可能会发生异常,例如
IOError
——您可以使用异常处理来处理此问题。例如:

try:
    h = urllib.urlopen("http://google.com/")
except IOError as e:                     
    print "Error opening URL"

可能会发生异常,例如
IOError
——您可以使用异常处理来处理此问题。例如:

try:
    h = urllib.urlopen("http://google.com/")
except IOError as e:                     
    print "Error opening URL"
  • 如果这不能做一些有意义的事情,它将引发一个异常,您可以使用
    try
    /
    接受该异常,但
    除外


  • urllib.urlopen
    被弃用,取而代之的是
    urllib2.urlopen

    >>> import urllib2
    >>> urllib2.urlopen('not a valid URL')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
        ...
    ValueError: unknown url type: not a valid URL
    >>>
    >>> urllib2.urlopen("http://thiswebsitedoesntexistq.com")
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
        ...
    urllib2.HTTPError: HTTP Error 404: Not Found
    >>>
    >>> # URLError is the parent class for the errors raised by urlopen 
    ... # if it can parse the URL
    ...
    >>> issubclass(urllib2.HTTPError, urllib2.URLError) 
    True
    
    或者,如果我没有理智的反应方式,我可以让它们繁殖。(通常人们希望捕获错误,以便打印错误并关闭程序。这通常是愚蠢的,因为如果不捕获并修复错误,Python无论如何都会这样做。)

    • 如果这不能做一些有意义的事情,它将引发一个异常,您可以使用
      try
      /
      接受该异常,但
      除外


    • urllib.urlopen
      被弃用,取而代之的是
      urllib2.urlopen

      >>> import urllib2
      >>> urllib2.urlopen('not a valid URL')
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
          ...
      ValueError: unknown url type: not a valid URL
      >>>
      >>> urllib2.urlopen("http://thiswebsitedoesntexistq.com")
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
          ...
      urllib2.HTTPError: HTTP Error 404: Not Found
      >>>
      >>> # URLError is the parent class for the errors raised by urlopen 
      ... # if it can parse the URL
      ...
      >>> issubclass(urllib2.HTTPError, urllib2.URLError) 
      True
      

      或者,如果我没有理智的反应方式,我可以让它们繁殖。(通常,人们希望捕获错误,以便打印错误并关闭程序。这通常很愚蠢,因为如果不捕获并修复错误,Python也会这样做。)

      但是是否存在适用于所有可能错误的变量?例如IOError?@Shady:您可以只使用
      except:
      ,而不提及要捕获的异常。这将捕获所有异常,但应该避免。通常,您应该始终指定要捕获的错误。但是,是否有任何变量适用于所有可能的错误?例如IOError?@Shady:您可以只使用
      except:
      ,而不提及要捕获的异常。这将捕获所有异常,但应该避免。通常,您应该始终指定要捕获的错误。