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 に答える