Комментирование кода в try-catch, Java - PullRequest
0 голосов
/ 05 июля 2011

У меня есть такой кусок кода в моем проекте:

try {
    downloadFile();
    unzipFile();
} catch (IOException e) {
    System.out.println("Can't download file!");
    e.printStackTrace();
}

Метод downloadFile() выводит исключение IOException, а метод unzipFile() вообще не выдает никаких исключений.

Теперь я пытаюсь отладить этот код, мой метод downloadFile() работает нормально, поэтому я хочу прокомментировать и посмотреть, как работает метод unzipFile(). Предположим также, что размер файла составляет 100 Мб:)

Когда я комментирую строку с 'downloadFile()', я получаю эту ошибку:

недостижимый блок для IOException. Это исключение никогда не выдается из тела оператора try

Чтобы отладить мой код, я вставляю строку типа

if (true) return;

в методе downloadFile(), а затем удаляем его.

Я уверен, что я делаю это неправильно.
Не могли бы вы дать мне пример того, как мастера Java работают в таких ситуациях. Благодарю.

Ответы [ 6 ]

3 голосов
/ 05 июля 2011

Как упоминал Роб в комментариях, тесты тестируют определенные вещи / методы / поведения. Если вы хотите проверить unzipFile, то напишите воспроизводимый контрольный пример для unzipFile и не связывайтесь ни с чем другим (например, downloadFile), которое может иметь свои собственные проблемы. Затем вы проверяете unzipFile с известными входными и выходными данными.

Другими словами, если вы хотите проверить unzipFile проверьте это, а не все остальное с ним.

Кроме того, простым решением для вас сейчас было бы следующее:

try {
    downloadFile();
} catch (IOException e) {
    System.out.println("Can't download file!");
    e.printStackTrace();
}
unzipFile();

чтобы вы могли легко закомментировать весь блок try / catch

2 голосов
/ 05 июля 2011

Если вы закомментируете downloadFile();, вы также должны закомментировать блок try-catch, потому что он больше ничего не перехватывает.

1 голос
/ 05 июля 2011

Зачем использовать try / catch, если вы уверены, что метод (unzipFile ()) не выдает никаких исключений.

0 голосов
/ 05 июля 2011

Обычно вам не нужно ничего комментировать, если у вас есть соответствующие инструменты. Например. вы допустили ошибку в unzipFile, предпочтительное затмение IDE покажет вам трассировку стека. Если вы щелкнете по позиции в трассировке стека, вы автоматически получите файл, в котором произошла ошибка, помечающая линию.

Если вы можете воспроизвести эту ошибку, вы можете установить точку останова прямо перед этой строкой для проверки переменных и атрибутов класса. Если вы идентифицируете блок, который вызывает проблему, вы можете установить точку останова прямо перед этим блоком и т. Д.

0 голосов
/ 05 июля 2011

Вы не должны комментировать downloadFile().Сообщение говорит вам правду: ни один код в блоке try не генерирует это исключение.

Я обычно использую IDE с отладчиком для такого рода вещей.Вы можете использовать Eclipse или NetBeans;Я предпочитаю IntelliJ из Jet Brains.

0 голосов
/ 05 июля 2011

Сама ошибка говорит всем "недостижимый блок для IOException. Это исключение никогда не выдается из тела оператора try" .

Как вы сказали, ваш unzipFile() метод не выдает никаких исключений, так зачем оборачивать его try..catch?Просто удалите или прокомментируйте try..catch (), чтобы запустить или отладить его.То есть просто напишите unzipFile() в коде больше ничего.Если unzipFile() зависит от downloadFile(), это может привести к ошибке.

...