Почему я не получаю исключение MalformedURLException при неправильном URL-адресе?

#java #spring #spring-boot

Вопрос:

Вот мой код, мне интересно, почему я не получаю исключение MalformedURLException по этому поводу, при неправильном URL-адресе он просто выводит Site is Down, когда это должен быть неправильный URL. Может быть, я неправильно понимаю исключение, например, я подумал https://goofdggle.djaosi неправильный URL-адрес, но моя фишка в том, что возвращаемый сайт недоступен, когда он должен быть неправильным URL. Кстати, это приложение для загрузки Spring.

 import java.io.IOException;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class URLCheckController {
    private String siteup = "Site is up!";
    private String sitedown = "Site is down";
    private String incorrectURL = "Incorrect URL!";
    
    @GetMapping("/check")
    public String getURLStatusMessage(@RequestParam String url) {

        String returnMessage = "";

        try {
            URL urlObj = new URL(url);
            HttpURLConnection conn = (HttpURLConnection) urlObj.openConnection();
            conn.setRequestMethod("GET");
            conn.connect();
            int responseCategory = conn.getResponseCode() / 100;
            
            if(responseCategory != 2 amp;amp; responseCategory != 3) {
                returnMessage = sitedown;
            } else {
                returnMessage = siteup;
            } 
        } catch (MalformedURLException e) {
            returnMessage = incorrectURL;
            
        } catch (IOException e) {
            returnMessage = sitedown;
        }

        return returnMessage;
    }
}

 

Комментарии:

1. Ваш пример не является неправильным URL-адресом. TLD не существует, да (по крайней мере, публично), но это все еще допустимый формат. В конце концов, вы могли бы настроить частный сервер имен, который мог бы разрешить этот TLD.

2. @dunni Можете ли вы привести пример неправильного TLD?

3. Я не думаю java.net . URL проверяет синтаксис TLD. Если вы используете неподдерживаемый протокол, вы получите исключение MalformedURLException.

4. Недопустимый URL-адрес будет, например. http::/google.com