Java - 如果用户输入了无效的IP地址或主机名,则抛出异常

时间:2013-03-07 19:11:45

标签: java exception ip inetaddress

我想抛出一个异常,当用户输入无效的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); }

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

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

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