Originariamente inviato da mark85_159622
Ma se non dichiaro la NullPointerException quando una stringa e' null l'eccezione si attiva comunque.
La dichiarazione con throws serve ed è obbligatoria solo per le eccezioni checked, proprio per "forzare" il chiamante a doverne tenere conto!!
Per quelle unchecked non c'è alcun obbligo, l'ho già detto.

Originariamente inviato da mark85_159622
Quindi in teoria non ci sarebbe bisogno di fare un if per controllare che la variabile sia null?
Diciamo che in generale no, non sarebbe obbligatorio ma bisogna vedere dove poi viene usata la stringa, perché ovviamente il problema si sposta più avanti.

Nel tuo caso viene passata al costruttore di FileOutputStream, che appunto lancia NullPointerException. Ma senza alcun messaggio specifico. Ecco perché se fai tu il test puoi lanciare la eccezione che vuoi e specificare un messaggio più appropriato.

Originariamente inviato da mark85_159622
Tanto se e' null Java lancia una eccezione indipendetemente che io usi throws oppure no.
Ripeto che dipende dove/come usi la stringa. Se cerchi di invocare un metodo su quel String ovviamente è la JVM che lancia direttamente NullPointerException! Se la passi a FileOutputStream lì dentro c'è un if ... esattamente come ho fatto io (il test è solo spostato più in la). Se la concateni ad un'altra stringa, non lancia un bel nulla, ottieni la stringa "null". Se la passi a qualcos'altro, bisogna vedere la documentazione.