Aは、URLが実際に不正な形式である場合、つまりURL仕様MalFormedURLException
に準拠していない場合にのみスローされ、存在しない場合にはスローされません。これは、クラスのコンストラクターによってスローされたカバーの下にあります。そのjavadocは次のように伝えます。java.net.URL
スロー
MalformedURLException
-文字列が不明なプロトコルを指定している場合。
"www.malformedurl.com"
したがって、たとえば、または
"foo://www.malformedurl.com"
の代わりに使用した場合にのみスローされます"http://www.malformedurl.com"
。
URLが存在するかどうかを検出するには、別の解決策に進むことをお勧めします。ホスト名が不明な場合は、UnknownHostException
代わりにキャッチする必要があります。
try {
document = Jsoup.connect("http://www.malformedurl.com").get();
// ...
} catch (UnknownHostException e) {
System.err.println("Unknown host");
e.printStackTrace(); // I'd rather (re)throw it though.
}
これは必ずしも相手側の問題ではなく、ネットワーク上のDNSサーバーが偽物である場合にも発生する可能性があります。
または、IPアドレスが到達可能かどうかを検出するには、SocketTimeoutException
代わりに次の情報を取得する必要があります。
try {
document = Jsoup.connect("http://12.34.56.78").get();
// ...
} catch (SocketTimeoutException e) {
System.err.println("IP cannot be reached");
e.printStackTrace(); // I'd rather (re)throw it though.
}