Swiftのtry-catchについて

こんにちは。shiguです。
Swift Lintを入れて、force_tryを怒られた件で気になったので調べてみました。

force_tryとは

try!のことです。
つまり「例外が出るかもしれないけれど無視しちゃってよ」という意味。
これがNGというのは確かにわかる気がします。なんでそのままにしておいたのでしょう笑

Swift3におけるtryの処理

try?

try? someErrorMethod()

例外が発生した時に何も起こりません(異常終了しません)。

try!

try! someErrorMethod()

例外が発生した時に異常終了(クラッシュ)します。

do catch

do {
try someErrorMethod()
} catch {
// some process...
}

例外が発生した時に処理(例外処理)を行います。
部分的にcatchすることもできますし、全てまとめてcatchすることもできます。

結局何を使えばいいの?

いわゆる、「エラーハンドリング」をしたい時としたくない時とで区別する必要があります。

エラーハンドリングをしたい時

→do catch

エラーハンドリングをしたくない時

→try?(異常終了せず無視する)

try!の使用用途はほぼない、とどちらのブログを見ても書いてありました。
try!を使うくらいならtry?で静かに無視した方が良さそうですし、確かに使用用途はなさそうです…。

参考:
こちらのブログで非常にわかりやすく説明してくださっています♪

tobi462.hatenablog.com

スポンサーリンク