1

我想抛出一个异常,当用户输入无效的 IP 地址、主机名或不是完全限定的域名时,它会显示一条错误消息。

我不太确定是使用unknownhostexception 还是IOException。

我尝试做 if 语句,但我不知道 java 中的“无效”是什么。

If (addr != ' not a valid IP address, host name, fully qualified domain name or entered something invalid ')
{
throw new IOException/UnknownHostException("this is invalid: " + addr); }

有人可以帮忙吗?提前致谢。

4

2 回答 2

2

尝试InetAddress.getByName(str)验证字符串。UnknownHostException如有必要,它会抛出一个。我建议完全删除您的if声明。也许是这样的:

public static InetAddress testAddress(String str) throws UnknownHostException {
    InetAddress add = InetAddress.getByName(str);

    // Check if IP address was simply returned, instead of host.
    if (add.getCanonicalHostName().equals(add.getHostAddress())) {
        throw new UnknownHostException(str + "is not a known host.");
    }
    return add;
}
于 2013-03-07T19:15:25.323 回答
0

有一个概念,称为 regex(正则表达式),您可以在其中检查该模式是否正确。您可能必须寻找好的解决方案或编写自己的正则表达式(在我个人看来这并不容易)。但这是一个很好的起点 http://www.mkyong.com/regular-expressions/how-to-validate-ip-address-with-regular-expression/ ;)

于 2013-03-07T19:31:00.090 回答