Moin moin,
mir ist gerade etwas aufgefallen, was ich bisher immer so "hingenommen" habe ohne es zu hinterfragen:
Das geht:
Das aber nicht:
Dann meckert der Compiler:
Sprich, ich muss zur main()-Methode noch ein throws hinzufügen:
Nun frag ich mich: Warum?
Wieso muss ich das potentielle Werfen einer IllegalArguementException nicht deklarieren, das einer allgemeinen Exception aber schon?
mir ist gerade etwas aufgefallen, was ich bisher immer so "hingenommen" habe ohne es zu hinterfragen:
Das geht:
Code:
public static void main(String [] args) {
if(args.length != 2) {
throw new IllegalArgumentException("too few arguments, 2 are required!");
}
}
Das aber nicht:
Code:
public static void main(String [] args) {
if(args.length != 2) {
throw new Exception("too few arguments, 2 are required!");
}
}
Dann meckert der Compiler:
Code:
unreported exception java.lang.Exception; must be caught or declared to be thrown
Sprich, ich muss zur main()-Methode noch ein throws hinzufügen:
Code:
public static void main(String [] args) throws Exception {
// check cli args
if(args.length != 2) {
throw new Exception("too few arguments! 2 are required!");
}
}
Nun frag ich mich: Warum?
Wieso muss ich das potentielle Werfen einer IllegalArguementException nicht deklarieren, das einer allgemeinen Exception aber schon?