Le mot-clé rethrow pourrait être comparé au mot-clé throws en Java, mais il n'est pas positionné de la même manière.
Il permet de propager une erreur jusqu'au try/catch suivant, qui, lui, sera chargé de la traiter une bonne fois pour toute. (ou de la repropager, si besoin, évidemment)
Le mot-clé doit se trouver dans le catch pour fonctionner correctement, comme ceci:
void main()
{
try
{
test();
}catch(e, s)
{
print("$s");
}
}
void test()
{
try
{
throw 1;
}catch(e, s)
{
rethrow;
}
}
Vous pouvez tester l'exemple et voir la trace de l'erreur ici (https://dartpad.dartlang.org/adbc3df380f795590d52e90614d49f67).