Hallo Bruno,
wäre das so etwa richtig?
Stimmt - mit throws deklariert man, dass eine Methode einen Fehler werfen kann, mit throw wirft man ihn.
Muss folglich bei der Angabe von throw immer vorgängig in der
Methodensignatur das throws Statement erwähnt sein?
Nein, das ist nicht immer nötig - es gibt zwei Arten von Fehlern.
Checked Errors muss man vorher deklarieren - das sind z.B. IOException, FileNotFoundException, etc.
Unchecked Errors kann man werfen, wann immer man will, ohne sie zu deklarieren - das sind z.B. Error, RunTimeException, IllegalArgumentException etc.
Der große Unterschied ist, ob die Fehler erwartet sind oder nicht - einen FileNotFound Error wirst du wahrscheinlich erwarten und dementsprechend auch behandeln müssen, weil du dich nicht 100%ig darauf verlassen kannst, ob die Datei da sein wird. Dann musst du die Methode mit Throws FileNotFoundException markieren, und dann kannst du den Fehler mit Try…Catch behandeln.
Ein einfacher „Error“ oder eine RunTimeException wird aber wahrscheinlich nur dann auftreten, wenn etwas furchtbar schief gegangen ist, und das etwas ist, was du nicht erwarten kannst bzw. erwartet hast, wenn z.B. die Argumente einer Methode falsch sind. Oder wenn in einem Programm ein Zähler zu weit inkrementiert wurde.
Also: Nein, du brauchst nicht alle Fehler zu deklarieren, aber im Zweifelsfall tu es lieber. Such einfach mal nah der Java Exception Hierarchy.
Gruß
–WhiteAvenger