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):
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:
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:
void my_function() throws Exception{}
ça ne fonctionnera pas.