Il costruttore di PrintWriter può lanciare FileNotFoundException e questo significa che 'pw' non verrebbe inizializzato.
Il modo corretto e "difensivo" per gestire la cosa è:
E come ripeto, ti va bene che close() non lancia eccezioni checked.codice:PrintWriter pw = null; try { pw = new PrintWriter(nomeFile); .... } catch (IOException e) { ... } finally { if (pw != null) { pw.close(); } }