- エラーの種類
- 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