незарегистрированное исключение java.io.IOException - PullRequest
1 голос
/ 07 октября 2010

Что не так с этим кодом

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

/**
 *
 * @author Master
 */
public class Server {
    try
    {
    ServerSocket S = new ServerSocket(3333);
    Socket So = S.accept();
    }
    catch(IOException e)
    {
        System.out.println("IOError");
    }

}

Сначала я написал код без попытки catch и получил ошибку unreported exception java.io.IOException; must be caught or declared to be thrown, но Netbeans не предлагал добавить блок try-catch. Теперь я добавил блок try-catch вручную, но он по-прежнему показывает ошибку и предлагает добавить еще один блок try-catch!

alt text

Ответы [ 3 ]

9 голосов
/ 07 октября 2010

Вы пытаетесь добавить блок try на верхнем уровне класса - вы не можете этого сделать. Блоки Try должны быть в методах или блоках инициализатора.

Если вы действительно хотите создать сокет сервера в процессе сборки, поместите код в конструктор:

public class Server {

    private ServerSocket serverSocket;
    private Socket firstConnection;

    public Server {
        try
        {
            serverSocket = new ServerSocket(3333);
            firstConnection = serverSocket.accept();
        }
        catch(IOException e)
        {
            System.out.println("IOError");
        }
    }
}

Я предполагаю, что у вас будет реальная обработка исключений (или перебрасывание), а не просто перехват IOException и продолжение, конечно же?

0 голосов
/ 07 октября 2010

На скриншоте вашей IDE ошибка "должна быть перехвачена или объявлена ​​как выброшенная" не единственная ошибка, которая у вас есть.

Когда у вас есть такой синтаксис, компилятор, скорее всего, сообщит о нескольких ошибках, некоторые из которых являются побочными эффектами других ошибок - например, не заключая этот код в метод (я уверен, что красный X рядом с блок catch сообщает об аналогичной ошибке).

0 голосов
/ 07 октября 2010

Это не допустимая Java. Этот код должен находиться в блоке, методе или конструкторе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...