Je m'attendais à une erreur de compilation dans le programme suivant à cause de l'instruction throw dans le bloc catch car IOException est une exception vérifiée et n'est pas interceptée par un autre bloc try dans le bloc catch . Mais je reçois "Hourra!" imprimé. Toute explication serait très appréciée.java checked exception dans une erreur de compilation clause catch
Selon JLS 11.2.3, http://java.sun.com/docs/books/jls/third_edition/html/exceptions.html
Il est une erreur de compilation si une méthode ou corps constructeur peut jeter une exception de type E lorsque les deux suivantes sont:
* E is a checked exception type * E is not a subtype of some type declared in the throws clause of the
méthode ou un constructeur.
import java.io.*;
public class Test{
public static void main(String args[])
{
System.out.println(method());
}
public static int method()
{
try{
throw new Exception();
}
catch(Exception e){
throw new IOException(); //No compile time error
}
finally{
System.out.println("Hurray!");
}
}
}
Merci à l'avance.
Étrange! J'utilise eclipse galileo aussi. Aucune erreur de compilation ici. – srandpersonia
J'utilise jdk 6 mise à jour 14. – srandpersonia
Ouf! Je l'ai maintenant après avoir créé un nouveau fichier de classe et copié coller à partir de SO. Je suppose que cela aurait dû être parce que j'utilisais Exception avant de changer cela en IOException et qu'une compilation automatique n'avait pas lieu. Merci pour votre réponse et votre temps. – srandpersonia