FileNotFoundException
Opis
FileNotFoundException jest wyjątkiem z grupy wyjątków kontrolowanych (dziedziczących po klasie Exception , ale nie RuntimeException ), co wymusza jego zgłoszenie przy pomocy instrukcji throws lub obsługę przez konstrukcję try catch.
Wyjątek ten znajduje się w pakiecie java.io więc pełna ścieżka klasy to java.io.FileNotFoundException , dziedziczy on po klasye IOException.

Typową sytuacją, kiedy wyjątek ten może wystąpić, jest próba odczytu pliku, który nie istnieje. W Javie może się to zdarzyć, gdy utworzymy obiekt File np. z błędną nazwą pliku i przed odczytem nie sprawdzimy, czy plik ten właściwie istnieje, np. przy pomocy metody exists().
Przykład
W powyższym kodzie tworzymy obiekt klasy File o nazwie someRandomName.txt - zakładamy, że plik taki nie istnieje. Na tym etapie nie jest to żaden problem, jednak gdy w wierszu 14 konstruktor klasy FileReader oczekuje, że przekazany obiekt File reprezentuje istniejący plik. W naszym przypadku go nie ma, więc generowany jest wyjątek FileNotFoundException i przejście do klauzuli catch, gdzie wyświetlamy informację o błędzie.

W celu uniknięcia wygenerowania wyjątku, możemy się przed nim zabezpieczyć najpierw sprawdzając ręcznie, czy plik istnieje i dopiero wtedy próbując go odczytać.
Dodanie instrukcji warunkowej if pozwala nam zabezpieczyć się przed próbą odczytu nieistniejącego pliku, jednak należy pamiętać, że ponieważ FileNotFoundException jest wyjątkiem kontrolowanym, to i tak musimy go jakoś obsłużyć. Dla czytelności możemy się jednak ograniczyć do deklaracji throws w sygnaturze metody main.
Przykłady na Github
Dyskusja i komentarze
Masz pytania do tego wpisu? Może chcesz się podzielić spostrzeżeniami? Zapraszamy dyskusji na naszej grupie na Facebooku.