Juri Pakaste:今日知った:Swiftでタイプド ノート

Juri Pakaste:今日知った:Swiftでタイプド

著者は、Swiftの型付きスロー(typed throws)において、エラーハンドリングを簡素化する貴重な機能を発見しました。当初、著者は型付きスローが特定のエラータイプに非常に役立つと感じていましたが、複雑なコードブロックが原因でSwiftがエラータイプを「any Error」に広げてしまう問題に遭遇しました。これにより、「catch」ブロックがエラーを正確に型付けできなくなり、コンパイルエラーが発生しました。著者の回避策は「catch let error as MyError」を使用することでしたが、これには到達不能なcatch-allブロックが必要となり、エラーハンドリングが不完全で不満の残るものとなりました。決定的な発見は、「do throws(MyError)」構文でした。これにより、「do」ブロックで期待されるエラータイプを明示的に宣言することで、Swiftコンパイラは正確なエラー型付けを維持します。このエレガントな解決策は、コンパイラが混乱するのを防ぎ、「catch」ブロックが指定されたエラータイプを正しく処理することを保証します。この機能は、Swiftで型付きスローを扱う際のエラーハンドリングの明確さと完全性を向上させます。著者が元の機能拡張提案でこの詳細を見落としていたことは、大きなミスでした。これで、すべてが型付けされたユニコーンと太陽の光です。