エラーハンドリング
エラーハンドリングとは、失敗の可能性を処理するプロセスです。たとえば、ファイルの読み取りに失敗した後も、その_不正な_入力を使い続けることは、明らかに問題になります。そうしたエラーに気づき、明示的に管理することで、プログラムの残りの部分をさまざまな落とし穴から守ることができます。
Rust でエラーに対処する方法はいくつかあり、それらは以下の小章で説明します。いずれも多少なりとも微妙な違いがあり、用途も異なります。目安としては、次のようになります。
明示的な panic は、主にテストや回復不能なエラーの処理に役立ちます。プロトタイピングでは、たとえばまだ実装されていない関数を扱う場合などに役立つことがありますが、そのような場合は、より説明的な unimplemented のほうが適しています。テストでは、panic は明示的に失敗させる妥当な方法です。
Option 型は、値が任意である場合や、値がないことがエラー条件ではない場合に使います。たとえば、ディレクトリの親です - / と C: には親がありません。Option を扱うとき、プロトタイピングや、値が存在することが絶対に確実な場合には、unwrap で問題ありません。ただし、何かが誤っていた場合にエラーメッセージを指定できるため、expect のほうがより有用です。
問題が発生する可能性があり、呼び出し元がその問題に対処しなければならない場合は、Result を使います。これらに対しても unwrap や expect を使うことはできます(ただし、それがテストや簡単なプロトタイプでない限り、そうしないでください)。
エラーハンドリングについてより厳密な議論は、公式の本のエラーハンドリングの章を参照してください。