leider habe ich gerade nicht allzu viel zeit, aber was mir auf den ersten blick aufgefallen ist, ist dass du folgendes geschrieben hast:
	
	catch (Exception e)
{
    System.out.println(e);
}
 statdessen solltest du
oder
schreiben.
printStackTrace() gibt genauere informationen welche methoden in welcher reihenfolge vor dem fehler aufgerufen wurden.
System.err.println(e); schreibt auf den standard error stream (err) anstelle vom standard output stream (out).
Normalerweise wird beides auf der konsole angezeigt, bei einem komplexeren programm willst du dann aber vielleicht nur die fehlermeldungen sehen und nicht noch tausende andere ausgaben. Wenn man jetzt die fehlermeldungen auf den err stream ond die normalen ausgaben auf den out stream schreibt, kann man den err stream in eine datei umleiten und schon hat man alle fehlermedungen.