63

Dart にエラーと例外があり、エラーと例外のどちらでもないのはなぜですか?

その理由は歴史的なものですか?

エラーをスローすることも、例外をスローすることもできます。Java のように、Analyzer によってチェックされるものはありません (Exception vs. RuntimeException)。

4

3 に答える 3

81

この投稿から、Bob Nystrom を引用します。

エラーとそのサブクラスは、プログラム エラー用です。これらのいずれかが発生した場合は、コードが正しくないため、コードを修正する必要があります。

エラー以外の例外クラスは、実行時エラー用です。投げられるのを防ぐことができる場合もありますが、できないことがよくあります。

いくつかの特別な状況を除いて、慣用的な Dart はエラーをスローする必要がありますが、キャッチすることはありません。それらは、アプリを停止し、バグの場所をプログラマーに警告するために、特に捕まらないように存在します。

つまり、例外が発生することを予期 (およびチェック) する必要があります (例外を処理することが意図されています)。エラーが発生した場合は、エラーをスローしている API の使用方法を確認する必要があります。使用方法が間違っている可能性があります。

API を作成している場合は、同じパターンを使用する必要があります。エラーは、下流の開発者が API をどのように使用しているかについてのメッセージです。

于 2013-06-26T09:38:09.983 に答える