目次
1. throwsってなんやねん
他言語経験者からすると、Swiftのthrows
って??となりませんか笑
本記事では、throws
を実例をもとに解説してみます。
一言で言うとエラーを投げまっせ
みたいな宣言をしているんでしょうかね。。
2. 実例
条件
ここでは割り算の結果が以下の場合について考えます。
- 3で割り切れる:threeError
- 7で割り切れる:sevenError
相当3や7で割り切れることに対して不満があるみたいです笑
早速コードです。
成功パターン
throw.swift
import Foundation
enum Errors: Error {
case threeError
case sevenError
}
func checkErrors(a: Int, b: Int) throws {
let answer = a / b
if answer % 3 == 0 {
throw Errors.threeError
}
if answer % 7 == 0 {
throw Errors.sevenError
}
}
do {
// エラーの可能性のあるメソッドの呼び出し
try checkErrors(a: 21, b: 21)
print("処理成功")
} catch {
print("処理失敗")
print(error)
}
結果
処理成功
失敗パターン
throw.swift
import Foundation
enum Errors: Error {
case threeError
case sevenError
}
func checkErrors(a: Int, b: Int) throws {
let answer = a / b
if answer % 3 == 0 {
throw Errors.threeError
}
if answer % 7 == 0 {
throw Errors.sevenError
}
}
do {
// エラーの可能性のあるメソッドの呼び出し
try checkErrors(a: 21, b: 7)
print("処理成功")
} catch {
print("処理失敗")
print(error)
}
結果
処理失敗
threeError
解説
- エラーを返す可能性のある関数につけます
- 引数を書きおわった後にくっつけます
-
do~catch
とセットで使います※これがなくてもOK!だけどエラーが無視される
3. おわりに
いかがでしたでしょうか。私は他言語経験者なのでいまだにthrows
の考え方に慣れません。
ありがとうございました!