Se il codice dovesse intopparsi o qualcuno dovesse farlo intoppare apposta con null non sarebbe possibile risalire alla causa dell'intoppo. Quando si tenta di acherare la prima cosa che si fa è mandare in eccezione il programma. Studiando le eccezioni si possono sapere informazioni relative alla classe. Se getInstance() non richiedesse try/catch non userei la gestione delle eccezioni.
Hai ragione sul discorso dei metodi, devo mettere public per poterli usare.
Voglio che nel file in cui vado a salvare le password degli utenti queste ultime non siano visibili in chiaro.