Je suis récemment tombé sur le code Dart suivant:
void doSomething(String url, String method) {
HttpRequest request = new HttpRequest();
request.open(method, url);
request.onLoad.listen((event) {
if(request.status < 400) {
try {
String json = request.responseText;
} catch(e) {
print("Error!");
}
} else {
print("Error! (400+)");
}
});
request.setRequestHeader("Accept", ApplicationJSON);
}
Je me demande quelle est la variable e
dans la clause catch:
catch(e) {
...
}
Évidemment, c'est une sorte d'exception , mais (1) pourquoi n'avons-nous pas besoin de spécifier son type, et (2) que pourrais-je ajouter pour spécifier son type concret? Par exemple, comment pourrais-je gérer plusieurs types d'exceptions possibles de la même manière que catchError(someHandler, test: (e) => e is SomeException)
?
1) Dart est une langue typée facultative. Le type de e
n'est donc pas requis.
2) vous devez utiliser la syntaxe suivante pour capturer uniquement SomeException
:
try {
// ...
} on SomeException catch(e) {}
Voir la section catch
de Dart: en cours d'exécution .
Enfin, catch
peut accepter 2 paramètres (catch(e, s)
) où le deuxième paramètre est le StackTrace .