Od this post, cytując Bob Nystrom:
błąd i jej podklasy są pod kątem błędów programowych. Jeśli pojawi się jeden z tych , Twój kod jest zły i powinieneś poprawić swój kod.
Klasy wyjątków niezwiązanych z błędami dotyczą błędów środowiska wykonawczego. Czasami możesz uniemożliwić ich wyrzucenie, ale często nie możesz.
Z wyjątkiem kilku szczególnych okoliczności, idiomatyczna Dart powinna rzucać Błędy, ale nigdy ich nie złapać. Istnieją specjalnie po to, aby nie zostać złapanym, aby usunąć aplikację i ostrzec programistę o lokalizacji błędu.
Innymi słowy, należy oczekiwać (i sprawdzić) wyjątków (należy je traktować). Jeśli pojawi się błąd, musisz sprawdzić, w jaki sposób korzystasz z interfejsu API, który generuje błąd - prawdopodobnie używasz go nieprawidłowo.
Jeśli piszesz interfejs API, powinieneś użyć tego samego wzorca. Błędy są komunikatami dla dalszych programistów o tym, jak używają Twojego interfejsu API.
Thx Chris za wyjaśnienie! Myślę, że tego brakuje w dokumentacji. Wystąpił już problem: https://code.google.com/p/dart/issues/detail?id=9377 –