Ich habe eine Frage bezüglich java.lang.Exception und die Art, wie es innerhalb der throw/throws-Klauseln betrachtet wird.Ausnahme - aktiviert und deaktiviert Ausnahme-Typ
Ich habe die folgenden 2 Beispiele und ich verstehe nicht genau, wie die java.lang.Exception behandelt wird: als aktiviert oder deaktiviert Ausnahme.
Die folgende Methode erfolgreich kompiliert:
public double method1() throws Exception {
return 0.7;
}
- hier scheint es mir, dass die java.lang.Exception bedrohen ist java.lang.RuntimeException oder java.lang.Error. Sie können angeben, dass es auch dann geworfen wird, wenn Sie nicht damit umgehen.
- Wenn wir anstelle einer Exception eine checked exception (das sind Unterklassen von java.lang.Exception) verwenden, dann müssten Sie eine throw-Deklaration innerhalb des body der Methode haben (oder eine Methode aufrufen, die löst das hat die Ausnahme überprüft). Recht?
Die folgende nicht kompiliert:
private void method2(int age) {
if (age > 30)
throw new Exception();
}
- hier ist meine Verwirrung ... wenn es wurde java.lang eine Unterklasse von Typ java.lang.RuntimeException oder werfen. Fehler hätte es kompiliert.
- Warum kompiliert es in diesem Fall nicht? Ich denke, es ist, weil es java.lang.Exception als eine geprüfte Ausnahme bedroht. Aber wenn es so ist, warum kompiliert method1 dann?
Danke, Luisa
Mögliche Duplikat [Java: vs ungeprüfte Ausnahme Erklärung geprüft] (http://stackoverflow.com/questions/6115896/java-checked-vs-unchecked-exception-explanation) – Burkhard