2013-03-07 18 views
1

Я хочу исключить, что, когда пользователь вводит неверный IP-адрес, имя хоста или не имеет полное доменное имя, оно вызывает сообщение об ошибке ,Java - выброс исключения, если пользователь вводил неверный IP-адрес или имя хоста

Я не слишком уверен, следует ли использовать unknownhostexception или IOException.

Я пробовал делать, если заявление, но я не знаю, что «invalid» может быть в 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); } 

Помогите пожалуйста? Заранее спасибо.

ответ

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; 
} 
+0

Я сделал это «InetAddress.getByName (НТР)» выше моего, если заявление. Я не знаю, какая часть после бит '! ='. –

+0

@AjayPunja Я не вижу необходимости в выражении 'if'. Если IP/хост недействителен, 'InetAddress.getByName()' генерирует исключение. Если исключение не выбрасывается, оно переходит. Просто удалите инструкцию 'if'. – whiskeyspider

+0

ОК, так что все, что мне нужно, это «throws MalformedURLException {//code...etc}», и он должен вызывать исключение при вводе недопустимого адреса. Скажем, вместо www.stackoverflow.com я вхожу в www.staccccckoveerflow.ocm, и это должно привести к ошибке? –

0

Существует концепция, называемая регулярным выражением (регулярное выражение), где вы можете проверить правильность этого шаблона. Возможно, вам придется искать хорошие решения или написать собственное регулярное выражение (что не так легко по моему личному мнению). Но вот хорошая отправная точка http://www.mkyong.com/regular-expressions/how-to-validate-ip-address-with-regular-expression/ ;)