SwiftUIのtry?とtry!の使い方を説明する。(エラー処理が必要な関数の前に付けるやつ)
結論
try? 関数()は、Optional型を返す。
try! 関数()は、強制アンラップした結果を返す。関数()がnilを返す場合はアンラップできないためAppがクラッシュする。
具体例
以下のテキストを記述したテキストファイル(/Users/yoshihiko/Desktop/yoshihiko.txt)を準備する。
ワタシは ゆうしゃ ヨシヒコ。
- 上記ファイルを読み込む関数にtry?を付けてみる。
- 上記ファイルを読み込む関数にtry!を付けてみる。
- ファイルパスを削除してエラーを投げるようにしてtry?を付けてみる。
- ファイルパスを削除してエラーを投げるようにして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の実行結果は以下のようになる。
- try? 関数()は、Optional型を返す。
- try! 関数()は、強制アンラップした結果を返す。
- try? 関数()は、Optional型を返す。ファイルパスが入っていないのでnilを返す。
- try! 関数()は、強制アンラップした結果を返す。関数()がnilを返す場合はアンラップできないためAppがクラッシュする。
Optional("ワタシは ゆうしゃ ヨシヒコ。") // ? 1
ワタシは ゆうしゃ ヨシヒコ。 // ? 2
nil // ? 3
まとめ
SwiftUIのtry?とtry!の使い方を説明した。
do/try/catchでエラー処理する方法も有る。下記記事参照。
コメント