2015-03-17 7 views
8

Ich habe meinen Quellcode mit dem eines Kollegen zusammengelegt, und ich sah, dass er eine Ausnahme hinzugefügt hatte, um in die Deklaration einer Methode eingefügt zu werden; Ich wusste jedoch, dass diese Ausnahme niemals wirklich von dieser Methode abweichen würde.Warum kann eine Methode so deklariert werden, dass viele Ausnahmen ausgelöst werden, auch wenn keine von ihnen ausgelöst wird?

Ich frage mich, warum der Compiler mich nicht über eine "non-through Ausnahme deklariert" (oder so ähnlich) warnen. Ich weiß, dass Sie eine Methode deklarieren können, die N Ausnahmen auslöst, auch wenn keine dieser Ausnahmen vom Code in der Methode ausgelöst wird.

Warum ist das?

public void foo() throws IOException, IntrospectionException, BadStringOperationException, ... { 
    //do nothing 
} 
+0

weil JVM die Ausnahme propagieren kann – OPK

Antwort

13
  1. Subklassen, die die Methode überschreiben, kann die Ausnahme auslösen, auch wenn seine übergeordnete Klasse nicht.
  2. Sie können später die Methode so ändern, dass eine der aufgeführten Ausnahmen ausgelöst wird, während die Abwärtskompatibilität beibehalten wird.
Verwandte Themen