Вы звоните System.out.print()
только один раз, но делаете это в цикле while
. Возможно, у вас есть дополнительные строки в конце abc.txt
, которые заставляют ваш цикл продолжаться.
РЕДАКТИРОВАТЬ в ответ на комментарий:
Что я должен делать, даже если у меня так много строк, исключение должно быть напечатано один раз, но если у меня есть - во многих местах все эти позиции должны быть напечатаны?
Во-первых, обратите внимание, что исключения не должны использоваться для управления потоком вашей программы - обычно они должны возникать только в исключительных обстоятельствах.
Теперь, если вы хотите указать, что нашли не менее 1 несоответствующей строки в abc.txt
, то вы можете изменить дизайн вашей программы так, чтобы ваш Patternmatch()
вернул boolean
результат и на основе этого возвращаемого значения вы можете увеличивать новое поле errorCnt
. Если этот новый счетчик больше нуля, вы можете распечатать свое информационное сообщение.
Если, однако, вы хотели бы просто исключить появление ошибки для пустых строк в тексте, вы можете поместить простой метод в свой метод Patternmatch()
, чтобы проверить длину строки trim()
'd:
if (strLine.trim().length() > 0 ) {
//do your test
}
Также - заметка о наименовании в Java. Имена классов начинаются с заглавной буквы (поэтому nomatchException
должно быть NomatchException
), а имена методов начинаются со строчной буквы (Patternmatch()
должно быть patternmatch()
).