Swift throws/try/try?/try! の違いと安全な使い分け
生徒
「先生、Swiftのエラーハンドリングでthrowsとかtryとか、あとtry?やtry!って出てくるんですけど、違いがよく分からないんです。」
先生
「いい質問ですね。これらはSwiftでエラーをどう扱うかを決めるための大事な仕組みなんです。それぞれに使いどころがあるので、一つずつ分かりやすく見ていきましょう。」
生徒
「お願いします!間違ったらアプリが落ちるって聞いたので怖いです…」
先生
「確かに正しい使い分けを知らないと危ないですが、理解すれば安全に使えるようになりますよ。」
1. throwsとは?
throwsは、「この関数は処理の途中で失敗する可能性がありますよ」と呼び出し側に伝えるためのSwiftの仕組みです。エラーが起きうることをあらかじめ宣言しておくことで、後から使う人が安全に対処できるようになります。
プログラミング未経験の方でも、「うまくいかなかった場合の逃げ道を用意しておく目印」だと考えると分かりやすいでしょう。
たとえば、数字を割り算する処理では「0で割ってしまう」という失敗が起こりがちです。そこで、その可能性をthrowsで明示します。
enum DivisionError: Error {
case divideByZero
}
func divide(_ a: Int, _ b: Int) throws -> Int {
if b == 0 {
throw DivisionError.divideByZero
}
return a / b
}
この例では、bが0のときにエラーを発生させています。throwsを付けた関数は、「必ず成功するとは限らない関数」になるため、呼び出す側は慎重に扱う必要があります。
逆に言えば、throwsが付いているだけで「ここは注意が必要な処理だ」と一目で分かるのが大きなメリットです。
2. tryの基本
tryは「エラーを投げる可能性のある関数を呼び出すとき」に必ず使うキーワードです。do-catchと組み合わせて安全に処理します。
do {
let result = try divide(10, 2)
print("結果: \(result)")
} catch {
print("エラーが発生しました: \(error)")
}
結果: 5
tryを使うと、もしエラーが起きてもcatchで受け止めることができ、アプリが強制終了しなくなります。
3. try? の特徴
try?は「エラーが出たらnilを返す」という便利な書き方です。失敗してもプログラムが止まらず、結果がオプショナル(値があるかないかを表す型)になります。
let safeResult = try? divide(10, 0)
print(safeResult) // nil
nil
例えば「ファイルが見つからなければ無視して続けたい」といったケースでは、このtry?がとても役立ちます。
4. try! の特徴と注意点
try!は「絶対にエラーが起きないと信じて実行する」ための書き方です。もし本当にエラーが発生した場合、アプリはクラッシュして強制終了します。
let forcedResult = try! divide(10, 2)
print(forcedResult)
5
このように正常な入力なら問題なく動きますが、危険性が高いので初心者はあまり使わない方がよいでしょう。
5. 安全な使い分け方
ここまで紹介したthrows、try、try?、try!の違いを整理すると、次のようになります。
throws:関数がエラーを投げる可能性があることを宣言する。try:エラーを投げる関数を呼び出すときに使い、do-catchで処理する。try?:失敗しても安全にnilを返す。軽いエラーチェックに便利。try!:失敗しないと確信しているときだけ使う。危険なので基本は避ける。
特に初心者の方は、まずtryとdo-catchで丁寧にエラーを処理する習慣をつけましょう。その後、状況に応じてtry?を取り入れると安全です。
6. 具体的な活用シーン
最後に、現実的なアプリ開発での使い分けをイメージしてみましょう。
- ネットワーク通信の失敗 →
tryとdo-catchでユーザーに「接続できませんでした」と表示する。 - ファイル読み込み → 失敗したら
nilでも問題ない場合はtry?を使う。 - アプリ内部で必ず成功すると分かっているテスト用処理 →
try!を限定的に使う。
このように「安全第一」で選ぶことが大切です。特にエラーハンドリングはアプリの信頼性やユーザー体験に直結するので、慎重に設計しましょう。
Windowsで始めるiPhoneアプリ開発入門|Swiftの基本と仕組みを1時間で攻略
Windowsで始めるiPhoneアプリ開発入門|Swiftの基本と仕組みを1時間で攻略
「iPhoneアプリを作りたいけれど、Macを持っていないから諦めている」そんな方のための画期的な入門講座です。実は、プログラミングの本質を学ぶのに高価な機材は必要ありません。本講座では、Windowsパソコンを使用し、クラウド環境を活用してAppleの最新言語Swift(スウィフト)の基礎を最短距離でマスターします。
Windowsで実現する開発環境
【つくるもの】
ブラウザ上で動作する「スマート・計算ツール」や「データ判定プログラム」をゼロから作成します。変数の扱いや条件分岐など、iPhoneアプリの内部で動くロジックを自分の手で構築する感動を体験してください。
【開発環境】
ブラウザだけでSwiftが動くプロ仕様のオンラインエディタ(Replit等)を使用します。面倒な設定は一切不要。今あるWindows PCで、プロのエンジニアと同じコードを書き始められます。
この60分で得られる3つの理解
OSの壁を越え、クラウドを活用してスマートに学習を開始する「現代的な開発スタイル」を習得します。
iPhoneアプリ特有のデータの扱い方や、Appleが推奨する「安全で美しいコード」の書き方を学びます。
将来的にiOSエンジニアとして副業・転職するために必要な準備や、Mac選びのポイントを伝授します。
※本講座は、将来的にiPhoneアプリ開発で収益化や転職を目指したい未経験者のためのエントリー講座です。マンツーマン形式により、Windows環境ならではの疑問にもその場でお答えし、あなたの理解度に合わせて進行します。
Windowsで始めるiPhoneアプリ開発入門