U javi sve izuzetke koje metoda može potencijalno baciti moraš navesti throws klauzulom u potpisu metode, ili staviti sve u try/catch blok.
U ovom slučaju FileWriter može baciti IOException, i to jednostavno moraš navesti u potpisu metode ako nećeš da pišeš try/catch. Naravno kako ovde govorimo o main metodi, podrazumeva se da ćeš pisati try/catch blokove. Međutim kad budeš pisao neke druge klase i njihove metode, gde je praksa da se izuzeci samo bacaju, a korisniku klasa se otavlja da ih obrađuje, moraš eksplicitno reći koje izuzetke metoda može da baca. To je tako u javi i tome se moraš povinovati
.
Da dodam još, prilikom implementiranja interfejsa ili nasleđivanja apstraktnih klasa pri redefinisanju njihovih metoda dozvoljeno ti je da suziš skup izuzetaka koje metoda baca od onog deklarisanog u interfejsu/apstraktnoj klasi, ali nikako da proširiš. Tako da ako skapiraš usput pri redefinisanju metode da će ti bacati neki izuzetak i dodaš ga u throws klauzulu te metode, moraš dodati i u onoj koju redefinišeš iz interfejsa/apstraktne klase.