Мой код застревает в блоке catch
Я должен записывать числа из одного файла в другой. И в процессе мой код застревает в блоке catch
BufferedReader bR = new BufferedReader(new FileReader(fileName1));
BufferedWriter bW = new BufferedWriter(new FileWriter(fileName2));
List<Character> list = new ArrayList<>();
String word = "";
while (bR.ready()) {
int data = bR.read();
char c = (char) data;
if (c == ' ') {
for (Character character : list) {
word += character;
}
list.clear();
try{
int i = Integer.parseInt(word);
System.out.println(i);
bW.write(i);
bW.write(" ");
word = null;
} catch(Exception e){
continue;
}
} else{
list.add(c);
}
}
bR.close();
bW.close();
}
Ответы (2 шт):
Рекомендую заменить функцию Integer.parseInt(); на
Integer.tryParse(word,0);
public int tryParse(String value, int defaultVal) {
try {
return Integer.parseInt(value);
} catch (NumberFormatException e) {
return defaultVal;
}
}
В блоке catch выводите сообщение ошибки e.printStackTrace(); или же так System.out.println(e.toString()); ну и еще один вариант более краткого отображения System.out.println(e.getMessage());
В итоге ваш catch должен выглядеть так
catch(Exception e){
e.printStackTrace();
continue;
}
В таком случае вы сможете узнать причину.
Вы кончено можете просто пропустить ошибку с помощью continue но не стоит этого делать, лучше разобраться в ее причинах и создать соответствующий код для решения проблемы, во время чтения вы встретили неверные значения, уведомите об этом пользователя. И попросите исправить либо если логика позволяет исправьте самостоятельно.
int i = Integer.parseInt(word);
Уверен, что тут вы в int пытаетесь положить строку, которая содержит не только числа, например, в строке появляются переносы строки или еще что-то. Поэтому у вас возбуждается исключение и вы постоянно попадаете в блок catch.