- エラーの種類 - Simple domain errors - Recoverable errors - Universal errors - Logic failures - ref. https://github.com/swiftlang/swift/blob/main/docs/ErrorHandlingRationale.md - Simple domain errors - Optional を使って nil を返すことでエラーを表現する - シンプルなエラー - 文字列→整数への変換など ```swift func toInt(_ string: String) -> Int? { ... } ``` - Recoverable errors - Error を投げる - エラーの内容によって呼び出し側で処理が変わるだろうという時に使う - `do` - `try` - `catch` を使ってエラー処理をする ```swift func toInt(_ string: String) throws -> String { ... } ``` - Universal errors - エラー処理をする必要がなくプログラムが停止すればいい時に使う - `fatalError` を使って Universal error を発生させる ```swift func toInt(_ string: String) -> Int { fatalError() } ``` - Logic failures - プログラマーがミスをしていてコードを修正すべきケース - `precondition` を使って実行時エラーとしてクラッシュさせる - 例 - 配列の out of bounds - `nil` optionals を unwrap した時 - 参考 - https://qiita.com/koher/items/a7a12e7e18d2bb7d8c77