如何返回"主机无法解析" gethostbyname失败后的消息

时间:2016-10-28 16:38:39

标签: python tkinter

这可能是一个简单的事情,但我还在学习python。 基本上我试图从主机名中提取IP地址,这样可以正常工作,但如果主机没有解决它的错误。我现在有它,所以一旦它解析了IP地址,它就会把它填充到一个文本框中,所以我试图在这里做的就是如果它无法解决...在该文本框中输入一条消息说不主人发现或其他什么。我收到一个错误:" socket.gaierror:[Errno 11004] getaddrinfo failed"当它没有解决时。

这是我的代码:

def findip():
    host = hname.get() # Pulls host from text box1
    ip = gethostbyname(host)
    ipaddress.set(ip) #exports to text box2
    return

所以我不知道的是失败所需的If命令(如果有意义的话)它会是这样的:

if "gethostbyname fails"
    ipaddress.set("Host does not resolve")
    else
    ipaddress.set(ip)

1 个答案:

答案 0 :(得分:1)

你必须尝试以这种方式捕获异常:

def findip():
    host = hname.get()
    try:
        ip = gethostbyname(host)
    except socket.gaierror:
        ip = "Host does not resolve"

    ipaddress.set(ip)

只需确保导入了socket模块或者它无法正常工作,如果您不需要socket模块,则只能导入例外,因此您需要做其中任何一个:

import socket
import socket.gaierror