Какое исключение я должен поймать на пунктирной линии? - PullRequest
0 голосов
/ 15 сентября 2009

У меня проблема в школе. Я новичок в программировании, и мне нужна помощь. Пожалуйста, заполните пунктирную линию:

import java.net.*; 
import java.io.*
public class Test{
public static void main (String arg[]} 
    int x=0;
    try { 
        ServerSocket s=new ServerSocket ( k ); 
        s.close();
    } 
    catch (..........................) {x++;}
    catch(IOException e) {}
    }
    System.out.println( "Total "+ x); }
}

Ответы [ 7 ]

4 голосов
/ 15 сентября 2009

Посмотрите в документации, какие исключения может выдавать конструктор ServerSocket и какое исключение может генерировать функция закрытия ServerSocket.Одним из них, вероятно, является IOException, просто посмотрите, что еще.

3 голосов
/ 15 сентября 2009

Подсказка: если вы используете современную IDE, она вам скажет. Например, просто напишите без блоков try и catch

import java.net.*; import java.io.*
public class Test{
public static void main (String arg[]} 
    int x=0;
    ServerSocket s=new ServerSocket ( k ); 
    s.close();
    System.out.println( "Total "+ x); }
}

IDE подчеркнет код и предложит вам предложение, щелкните по нему, и он автоматически вставит соответствующие исключения.

2 голосов
/ 15 сентября 2009

Вам нужно перехватить (или объявить, что ваш метод выдает) каждое Проверенное Исключение, которое объявлено кодом, который вы вызываете. Они задокументированы в JavaDoc и в сигнатуре метода. Не проверенные исключения, такие как IllegalArguementException, не нужно перехватывать.

2 голосов
/ 15 сентября 2009

Ответ можно найти в JavaDoc для используемого вами конструктора ServerSocket .

0 голосов
/ 15 сентября 2009

Как вы упоминаете в своем комментарии к Анри, вы должны выбирать между либо SecurityException, либо IllegalArgumentException.

Значение здесь лежит в переменной х. Что должен считать х? Мое предположение было бы первым, но в вашем назначении должен быть намек.

(Кстати: я вижу только упоминание SecurityException, кроме IOException в документации)

0 голосов
/ 15 сентября 2009

Чтобы код скомпилировался, строка должна выглядеть так:

catch (StackOverflowError exc) {x++;}
0 голосов
/ 15 сентября 2009

Если вы используете IDE, такую ​​как Eclipse, вы можете легко исправить эти и многие другие проблемы, поскольку IDE укажет, какие именно исключения необходимо перехватить, избавив вас от перехода на страницу Javadoc, которая с Кстати, легко доступен прямо из IDE.

@ akf: Это не мнение преподавателей некоторых крупных школ CS. Например, " Введение в компьютерные науки | Методология программирования " в Стэнфорде использует модифицированную версию Eclipse. Я думаю, что это намного лучший способ выучить язык, избегая тех ситуаций, когда вы решаете проблему, компилируете, а затем исправляете новую проблему. Это может быть неприятно для новичков. IDE - это всего лишь инструмент, помогающий программированию, он не вызывает зависимости и, конечно, не остановит вас от написания кода без него.

Я согласен, однако, что важно знать основы, если речь идет об использовании java или javac, на случай, если вы когда-нибудь окажетесь с терминалом перед вами.

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