Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 我如何捕获我';你还没有完全进口吗?_Python_Exception_Try Catch - Fatal编程技术网

Python 我如何捕获我';你还没有完全进口吗?

Python 我如何捕获我';你还没有完全进口吗?,python,exception,try-catch,Python,Exception,Try Catch,通常,如果我导入了套接字,我将能够轻松捕获异常: >>> import socket >>> try: ... socket.gethostbyname('hello') ... except socket.gaierror: ... print('oops') ... oops 但是如果我只导入socket.gethostbyname,它将不起作用: >>> from socket import gethostbyname

通常,如果我导入了
套接字
,我将能够轻松捕获异常:

>>> import socket
>>> try:
...     socket.gethostbyname('hello')
... except socket.gaierror:
...     print('oops')
...
oops
但是如果我只导入
socket.gethostbyname
,它将不起作用:

>>> from socket import gethostbyname
>>> try:
...     gethostbyname('hello')
... except socket.gaierror:
...     print('oops')
...
Traceback (most recent call last):
  File "<stdin>", line 3, in <module>
NameError: name 'socket' is not defined
>>从套接字导入gethostbyname
>>>尝试:
...     gethostbyname('hello')
... 除socket.gai错误外:
...     打印('oops')
...
回溯(最近一次呼叫最后一次):
文件“”,第3行,在
NameError:未定义名称“套接字”
如果我试图捕捉
gaierro
,我也会得到一个
namererror


有什么解决办法吗?是否无法用字符串捕获异常(例如除了“socket.gaierro”之外的
)?

在这种情况下,您应该使用:
从socket导入gethostbyname,gaierro
,然后重试:

except gaierror:
    print('oops')
这是因为来自套接字导入gethostbyname的
等效于:

import socket
gethostbyname=socket.gethostbyname
del socket

因此,
socket
将从名称空间中删除,您将得到
namererror

如果您不想导入完整模块,您也可以简单地导入异常。PEP8声明允许您这样做

from socket import gethostbyname, gaierror