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

Java-如果用户输入的IP地址或主机名无效,则引发异常,java,exception,ip,inetaddress,Java,Exception,Ip,Inetaddress,我想抛出一个异常,当用户输入无效的IP地址、主机名或不是完全限定的域名时,它会显示一条错误消息 我不太确定是使用unknownhostexception还是IOException 我尝试使用if语句,但不知道java中的“invalid”是什么 If (addr != ' not a valid IP address, host name, fully qualified domain name or entered something invalid ') { throw new IOExce

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

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

我尝试使用if语句,但不知道java中的“invalid”是什么

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); }

有人能帮忙吗?提前感谢。

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

有一个称为regex(正则表达式)的概念,您可以在其中检查该模式是否正确。您可能需要寻找好的解决方案或编写自己的正则表达式(在我个人看来,这并不容易)。 但这是一个很好的起点
;)

我在if语句上面做了这个“InetAddress.getByName(str)”。我不知道“!=”后面的部分位。@AjayPunja我认为没有必要使用
if
语句。如果IP/主机无效,
InetAddress.getByName()
将引发异常。如果没有抛出异常,它将通过。只需删除您的
if
语句。好的,所以我只需要“抛出MalformedURLException{//code…etc}”,当我输入无效地址时,它应该抛出一个异常。比如说,我输入www.stacccckoveerflow.ocm而不是www.stackoverflow.com,它应该会带来一个错误?@AjayPunja请看我修改过的示例。我用Unknownhostexception测试了它,但它返回81.200.64.50,而不是错误。我输入了一个错误的IP,但我不太确定它为什么不返回错误和地址。