数週間前、重要なアプリケーションで初めて Core Data を使い始めました。私を驚かせ、混乱させたものの 1 つは、エラー処理のしくみです。例を挙げると、ファイルの URL を設定したときに参照によって返される NSError オブジェクトを適切に処理するために、Finder でデータ ファイルを「ロック」として設定することを最初に試みました。驚いたことに、nil を返して NSError を設定する代わりに、永続ストア コーディネーターは、基になる NSData からキャッチされない例外を発生させました!
同時に、Core Data ではエラー処理が少し不要な場合もあるようです。たとえば、プログラマーのミス以外にフェッチ要求でエラー処理が必要になる明確な理由はわかりません (ちなみに、私の経験では例外も発生します)。これらの場合、私は NSError 参照ポインターに NULL を渡してきました。
try / catch ブロックと NSError の間で、Core Data をなだめるためのコードを書くのに多くの時間を費やすことができましたが、それについては実用的になりたいので、決して実行されないエラー コードに時間を費やしません。それを念頭に置いて、アプリケーションでのエラー処理にどのようにアプローチしますか? 現実の世界で見た中で、必ず説明する必要のあるエラーは何ですか?