Zitat von Sicka
Ich denke, wenn im try-Block ein Fehler auftritt, wid die Exception geworfen, die im catch-Block steht, warum funktioniert das dann hier nicht?
FALSCH, im try-Block wird die Exception geworfen, die eben erzeugt wird (entweder selbst mit throw ... oder durch eine Funktion, die Exceptions wirft).
Im Catch-Block musst du dann genau diese Exception fangen oder zumindest eine Oberklasse davon (im Zweifelsfall vom Typ Exception). Bei parseInt ist das NumberFormatException und deswegen wird sie auch bei falschem Format geworfen.
Wenn du eigene Exceptions fangen willst, musst du sie vorher auch werfen, wenn irgendwo ein Fehler auftritt, und zwar z.B. mit "throw new MyException()" im try-Block (entweder direkt oder indirekt über eine selbst gebaute Funktion, die deine Exceptions wirft).
Bei vordefinierten Funktionen musst du aber die Exceptions fangen, die vordefiniert sind (siehe Dokumentation), oder du baust dir eine Hilfsfunktion, die diese Exception fängt und daraufhin deine eigene weiterwirft, was aber in dem Fall wohl eher unnötig ist.
Ich hoffe, das stimmt so in etwa.