【问题标题】:Java - Throwing an exception if user entered invalid IP address or host nameJava - 如果用户输入了无效的 IP 地址或主机名,则抛出异常
【发布时间】:2013-02-23 03:43:30
【问题描述】:

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

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

【问题讨论】:

    标签: java exception ip inetaddress


    【解决方案1】:

    尝试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;
    }
    

    【讨论】:

    • 我在 if 语句上方做了这个 'InetAddress.getByName(str)'。我不知道 '!=' 位之后的部分。
    • @AjayPunja 我认为不需要if 声明。如果 IP/主机无效,InetAddress.getByName() 将抛出异常。如果没有抛出异常,则通过。只需删除您的 if 声明即可。
    • 好的,所以我只需要' throws MalformedURLException { //code...etc} ',当我输入无效地址时它应该抛出异常。比如说,我输入的是 www.staccccckoveerflow.ocm 而不是 www.stackoverflow.com,它应该会带来错误?
    • @AjayPunja 查看我修改后的示例。
    • 我用 Unknownhostexception 对其进行了测试,但它返回 81.200.64.50,而不是错误。我输入了一个错误的 IP,但我不太清楚为什么它不返回错误并返回一个地址。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-16
      • 2014-09-15
      • 2011-03-23
      • 2015-11-28
      • 1970-01-01
      • 2014-04-12
      相关资源
      最近更新 更多