BETA

Swift Programming Language 5.2 うろ覚えな文法 Swiftでのエラーハンドリング

投稿日:2020-03-29
最終更新:2020-04-02

普段エラー処理では、RxかResultパターンを利用するため、try-catchでエラーハンドリングする機会が
少なくなっていた。
そのため、Swiftでのエラー処理の記述方法の理解が曖昧になっていた。
備忘録として残す。

do {  
    ...  
// MyError1をキャッチして処理をしたい場合(処理でエラーインスタンスを使う)  
} catch let error as MyError1 {  
    ...  
// MyError1をキャッチして処理をしたい場合(処理でエラーインスタンスを使わない)  
} catch is MyError3 {  
    ...  
// 列挙型がErrorを準拠している場合は`is`を付けない  
} catch MyError4.error1 {  
// 列挙型のAssociated Valueは、以下のように取り出せる  
} MyError4.error2(let value) {  
// すべてのエラーをキャッチして処理をしたい場合(処理でエラーインスタンスを使わない)  
} catch {  
    ...  
}  

また、whereで詳細な条件を指定できます。

struct MyError: Error {  
    let value: Int  
}  

func someLogic() throws {  
    let myError = MyError(value: 0)  
    throw myError  
}  

do {  
    try someLogic()  
} catch let error as MyError where error.value > 0 {  
    print("error.value > 0")  
} catch let error as MyError where error.value == 0 {  
    print("error.value == 0")  
} catch let error as MyError where error.value < 0 {  
    print("error.value < 0")  
}  

参考

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

prez18の技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう