gethostbyname 失败后如何 return "Host is not resolvable" 消息

How to return "Host is not resolvable" message after gethostbyname failure

这可能很简单,但我仍在学习 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)

你必须尝试捕获异常,这样:

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