Отказ от ответственности: я давно не занимался Java.

Я создал этот одноэлементный класс для создания HttpURLConnection.

public class EstablishConnection {
    HttpURLConnection conn = setupConn("some url");
    private static final EstablishConnection instance = new EstablishConnection();
    
    //private constructor to avoid client applications to use constructor
    private EstablishConnection(){}
​
    public static EstablishConnection getInstance(){
        return instance;
    }
    
    private static HttpURLConnection setupConn(String addr) throws MalformedURLException, IOException, ProtocolException {
        URL url = new URL(addr);
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setReadTimeout(10000);
        conn.setConnectTimeout(15000);
        conn.setRequestMethod("POST");
        conn.setDoInput(true);
        conn.setDoOutput(true);
        return conn;
    }
}
​

Почему я получаю незарегистрированное исключение MalformedURLException, когда бросаю его в setupConn?

|       HttpURLConnection conn = setupConn("some url");
unreported exception java.net.MalformedURLException; must be caught or declared to be thrown
0
Andy 25 Ноя 2020 в 16:00

1 ответ

Лучший ответ

Вы генерируете исключение из функции setupConn, но не обрабатываете выброшенное исключение, когда вызываете его здесь:

HttpURLConnection conn = setupConn("some url");

Вы можете обработать исключение, используя try catch в функции setupConn, или вы можете вызвать функцию в конструкторе, а затем повторно выбросить ее оттуда.

1
Faizan Burney 25 Ноя 2020 в 13:10