SwiftUI | try?とtry!の使い方(エラー処理が必要な関数の前に付けるやつ)

SwiftUI

SwiftUIのtry?とtry!の使い方を説明する。(エラー処理が必要な関数の前に付けるやつ)

結論

try? 関数()は、Optional型を返す。

try! 関数()は、強制アンラップした結果を返す。関数()がnilを返す場合はアンラップできないためAppがクラッシュする。

具体例

以下のテキストを記述したテキストファイル(/Users/yoshihiko/Desktop/yoshihiko.txt)を準備する。

ワタシは ゆうしゃ ヨシヒコ。
  1. 上記ファイルを読み込む関数にtry?を付けてみる。
  2. 上記ファイルを読み込む関数にtry!を付けてみる。
  3. ファイルパスを削除してエラーを投げるようにしてtry?を付けてみる。
  4. ファイルパスを削除してエラーを投げるようにしてtry!を付けてみる。
import SwiftUI

struct ContentView: View {
    var body: some View {
        Button("ボタンをタップ") {
            test1()
        }
        .buttonStyle(.borderedProminent)
    }
            
    func test1() {
        let ファイルパス1 = "/Users/yoshihiko/Desktop/yoshihiko.txt"
        print(try? String(contentsOfFile: ファイルパス1))  // ? 1
        print(try! String(contentsOfFile: ファイルパス1))  // ? 2
        let ファイルパス2  = ""
        print(try? String(contentsOfFile: ファイルパス2))  // ? 3
        print(try! String(contentsOfFile: ファイルパス2))  // ? 4

    }
    
}

1,2,3の実行結果は以下のようになる。

  1. try? 関数()は、Optional型を返す。
  2. try! 関数()は、強制アンラップした結果を返す。
  3. try? 関数()は、Optional型を返す。ファイルパスが入っていないのでnilを返す。
  4. try! 関数()は、強制アンラップした結果を返す。関数()がnilを返す場合はアンラップできないためAppがクラッシュする。
Optional("ワタシは ゆうしゃ ヨシヒコ。")  // ? 1
ワタシは ゆうしゃ ヨシヒコ。              // ? 2
nil                                   // ? 3

まとめ

SwiftUIのtry?とtry!の使い方を説明した。

do/try/catchでエラー処理する方法も有る。下記記事参照。

コメント

タイトルとURLをコピーしました