Chez oim, forum libre

Débattre => Informatique, programmation, geek attitude... => Discussion démarrée par: Songbird le vendredi 01 juillet 2016, 21:50

Titre: Peut-on propager une exception ?
Posté par: Songbird le vendredi 01 juillet 2016, 21:50
En Java, grâce au mot-clé throws, il est possible de propager l'exception à l'extérieur d'une méthode et/ou d'un constructeur pour laisser l'utilisateur gérer les erreurs à sa guise.

En revanche, Dart ne supporte pas cette fonctionnalité.
Le langage part du principe que si vous créez une ressource destinée à être utilisée par quelqu'un d'autre, c'est à vous de gérer l'erreur. (facilitant alors de debugging pour les débutants qui ont tendance à faire ceci):
Code
try
{
    java.io.BufferedReader buffer = new BufferedReader(new java.io.FileReader(new java.io.File("yourFile")));
}catch(IOException ioe){} //A NE JAMAIS FAIRE !

L'exemple est en Java, mais ça aurait pu être le cas en Dart si il supportait ce genre de fonctionnalités.

Lorsque vous avez besoin de lancer une exception, vous serez obligé de la catcher directement comme ceci:

Code
try
{
    if(1 > 2){ throw new Exception("An error was occurred");}
}catch(e, s)
{
    print(s);
}

Vous pouvez d'ailleurs essayer par vous-même d'adopter cette syntaxe:

Code
void my_function() throws Exception{}

ça ne fonctionnera pas.