DartにおけるErrorとExceptionの使い分け

Error vs. Exception in Dart - Stack Overflow より。

Error and its subclasses are for programmatic errors. If one of those occurs, your code is bad and you should fix your code.

Non-Error exception classes are for runtime errors. Sometimes you can prevent them from being thrown, but often you cannot.

Errorはコードが悪いときにthrowするもの。
Errorはどこかコードが悪いことを示すためにthrowするものなのでcatchするべきものではない。

Exceptionはランタイムで起こり得る例外をthrowするもの。
catchして適切な処理を行うべき。

References

stackoverflow.com