Вы совершили классическую ошибку: перехватили исключение (в данном случае FileNotFoundException) и фактически не восстанавливались после него. Таким образом, когда открытие файла не удается, вы передаете аргумент null
в InputStreamReader(...)
, и это вызывает NPE.
Кроме того, я должен добавить throws IOException, FileNotFoundException к main или использовать try {} вместо этого?
Это зависит от ваших требований. Вы должны решить, хотите ли вы, чтобы исключения распространялись на main
(что, вероятно, придется отказаться), или вы хотите, чтобы текущий метод пытался восстановить. Например, вы можете попросить другое имя файла ...