2013-06-26 13 views
11

Dlaczego w DART są błędy i wyjątki, a nie błędy czy wyjątki?Błąd vs wyjątek w Dart

Czy to jest przyczyna historyczna?

Mogę rzucić błąd, mogę rzucić wyjątek. Żaden z nich nie jest sprawdzana przez analizator jak w Javie (wyjątek vs. RuntimeException)

Odpowiedz

20

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.

+2

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 –