Необработанное исключение, но попытка блоков catch, кажется, не делает то, что, я думаю, должно - PullRequest
0 голосов
/ 10 октября 2018

В настоящее время я работаю над подключением к IRC-серверу и получаю сообщение об ошибке «Ошибка: (20, 16) java: незарегистрированное исключение java.io.IOException; должно быть перехвачено или объявлено как выброшенное»"

public connection(String host, int port){
    this.host = host;
    this.port = port;
    connect();         //This line is erroring
    register();
}

private PrintStream out;
private void connect() throws IOException, UnknownHostException {
    Socket socket = new Socket(host, port);
    out = new PrintStream(socket.getOutputStream());
}

Я также пытался

private PrintStream out;
private void connect() throws IOException, UnknownHostException {
    try {
        Socket socket = new Socket(host, port);
        out = new PrintStream(socket.getOutputStream());
    } catch (UnknownHostException ex){
        System.out.println(ex.getMessage());
    }
}

, а также

private PrintStream out;
private void connect() throws IOException, UnknownHostException {
    try {
        Socket socket = new Socket(host, port);
        try {
            out = new PrintStream(socket.getOutputStream());
        } catch(IOException exc){
            System.out.println(exc.getMessage());
        }

    } catch (UnknownHostException ex){
        System.out.println(ex.getMessage());
    }
}

Но ошибка сохраняется во всех опциях, которые я пробовал.

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Вы определили свой метод для выброса IOException и UnknownHostException.

private void connect() throws IOException, UnknownHostException {
} 

Теперь, когда вы вызываете этот метод, вы должны обрабатывать эти исключения, как показано ниже.

try {
    connect();
} catch (IOException e) {
    e.printStackTrace();
}

С другой стороны, вы обнаружили ошибки внутри метода connect ().Таким образом, нет никакого реального требования снова бросать их в определение метода.Например, вы можете определить свой метод, как показано ниже.Если вы идете по этому маршруту, вы можете вызвать метод connect () с вашим текущим синтаксисом.

private void connect(){
}
0 голосов
/ 10 октября 2018

Вы должны окружить connect () пробным уловом.Метод connect вызывает исключение.

public connection(String host, int port){
this.host = host;
this.port = port;
try{
connect();         //This line is erroring
 }catch(Exception e){}
register();

}

...