Во-первых, java.net.MalformedURLException не относится к «не найденному» ресурсу:
открытый класс MalformedURLException расширяет IOException
Брошенный, чтобы указать, что неправильно сформированный URL имеетпроизошло.Либо в строке спецификации не найден юридический протокол, либо строка не может быть проанализирована.
Я понимаю, что вы хотите поймать ситуацию, когда URL приводит к не найденному коду возврата (404),Для этого вам нужно проверить код ответа HTTP.
Самый простой способ - использовать java.net.HttpURLConnection
:
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/net/HttpURLConnection.html
открытый абстрактный класс HttpURLConnectionрасширяет URLConnection
URLConnection с поддержкой специфичных для HTTP функций.Подробности см. В спецификации.
Каждый экземпляр HttpURLConnection используется для выполнения одного запроса, но базовое сетевое соединение с сервером HTTP может прозрачно использоваться другими экземплярами.Вызов методов close () для InputStream или OutputStream объекта HttpURLConnection после запроса может освободить сетевые ресурсы, связанные с этим экземпляром, но не влияет на какое-либо общее постоянное соединение.Вызов метода disconnect () может закрыть базовый сокет, если постоянное соединение в это время не используется.
Вы можете проверить код ответа, вызвав getResponseCode()
.Если результат меньше 400, вы получили правильный ответ, в противном случае произошла ошибка клиента (4xx) или ошибка сервера (5xx).
Примерно так:
public static String getUrlContents(String theUrl) {
String content = "";
try {
URL url = new URL(theUrl);
//Create a url connection object
URLConnection urlConnection = url.openConnection();
if (urlConnection instanceof HttpURLConnection) {
HttpURLConnection conn = (HttpURLConnection) urlConnection;
if (conn.getResponseCode() < 400) {
// read contents
} else {
System.out.println(conn.getResponseMessage());
// treat the error as you like
}
} else {
// not a HTTP connection, treat as you like
}
} catch (MalformedURLException e) {
System.out.println("The following url is invalid'" + theUrl + "'");
//logging error should go here
} catch (Exception e) {
System.out.println("Something went wrong, try agian");
}
return content;
}
Я не проверял код, но я думаю, что вы можете получить общее представление.