SwiftUIのdo/try/catchの使い方を説明する。
結論
do節にtry文を記述する。catch節にtry文がエラーを返した場合の処理を記述する。
具体例
do節が実行される例
任意のテキストファイルを準備する。
ワタシは ゆうしゃ ヨシヒコ。
SwiftUIで上記ファイルを読み込みprint()するというコードを記述し実行する。
import SwiftUI
struct ContentView: View {
var body: some View {
Button("ボタンをタップ") {
test1()
}
.buttonStyle(.borderedProminent)
}
func test1() {
let ファイルパス = "/Users/yoshihiko/Desktop/yoshihiko.txt"
do {
print(try String(contentsOfFile: ファイルパス))
} catch {
print("エラーが発生しました。");
}
}
}
このコードはtry文がエラーを返さないためdo節が実行されファイルの中身がprint()出力される。
ワタシは ゆうしゃ ヨシヒコ。
catch節が実行される例
ファイルのパスを入れ忘れたとする。
import SwiftUI
struct ContentView: View {
var body: some View {
Button("ボタンをタップ") {
test1()
}
.buttonStyle(.borderedProminent)
}
func test1() {
let ファイルパス = "" // ? ファイルパスを入れ忘れたとする
do {
print(try String(contentsOfFile: "ファイルパス"))
} catch {
print("エラーが発生しました。");
}
}
}
このコードはtry文がエラーを返すためcatch節が実行され下記がprint()出力される。
エラーが発生しました。
catch let 変数名 と記述することでエラー内容を変数に格納できる。
import SwiftUI
struct ContentView: View {
var body: some View {
Button("ボタンをタップ") {
test1()
}
.buttonStyle(.borderedProminent)
}
func test1() {
let ファイルパス = ""
do {
print(try String(contentsOfFile: "ファイルパス"))
} catch let エラー内容 { // ? catch let 変数名
print("エラーが発生しました。")
print(エラー内容) // ? 変数の値をprint
}
}
}
実行するとエラー内容が表示される。
エラーが発生しました。
Error Domain=NSCocoaErrorDomain Code=258 "The item couldn’t be opened because the file name “” is invalid." UserInfo={NSFilePath=}
まとめ
SwiftUIのdo/try/catchの使い方を説明した。
try?やtry!でエラー処理する方法もある。下記記事参照。
コメント