0
1

【Swift】throwsってなんやねん

Posted at

目次

1.throwsってなんやねん
2.実例
3.おわりに

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の考え方に慣れません。
ありがとうございました!

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1