Swiftのthrowing関数とエラーハンドリングを徹底解説!初心者でもわかるエラー処理の基本
生徒
「Swiftでエラーが発生するかもしれない処理って、どうやって書くんですか?」
先生
「そういうときはthrowやtryを使って、throwing関数とエラーハンドリングで対応しますよ。」
生徒
「throwって投げるって意味ですよね?関数でどうやって使うんでしょうか?」
先生
「では、Swiftでのthrowing関数の使い方やエラーハンドリング方法を、例を使ってゆっくり説明していきましょう。」
1. throwing関数とは?
Swiftのthrowing関数とは、エラーが発生する可能性がある関数のことです。普通の関数とは違い、「もし何か問題が起きたら、エラーをthrow(投げる)して呼び出し元に伝えるよ」という意味を持ちます。
関数の定義時にthrowsキーワードを付けると、throwing関数になります。
func divide(_ a: Int, by b: Int) throws -> Int {
if b == 0 {
throw DivisionError.dividedByZero
}
return a / b
}
この関数は、割る数が0だったときにエラーをthrowしています。DivisionErrorはあとで定義します。
2. エラーの種類を定義しよう(Error型)
throwing関数で使うエラーは、Errorプロトコルに準拠した「列挙型(enum)」で定義します。
enum DivisionError: Error {
case dividedByZero
}
このDivisionErrorという列挙型には、dividedByZeroというケース(場合)を定義しています。これが「割り算で0除算エラーが発生した」ことを表すエラーになります。
3. tryでthrowing関数を呼び出す
throws付きの関数は、呼び出すときにtryを使う必要があります。これは「この関数を使うときはエラーが起きるかもしれないから注意してね」という意味です。
do {
let result = try divide(10, by: 0)
print("計算結果: \(result)")
} catch DivisionError.dividedByZero {
print("エラー: 0で割ることはできません")
}
この例では、divide関数をtryで呼び出し、エラーが発生した場合はcatchで処理しています。
4. do-catchでエラーを処理する方法
Swiftでは、do-catch文を使ってエラーハンドリング(=エラーをうまく処理すること)を行います。doブロックの中でエラーが出るかもしれない処理を書き、実際にエラーが出たらcatchで対応します。
do {
let result = try divide(10, by: 2)
print("計算結果: \(result)")
} catch {
print("何かしらのエラーが発生しました")
}
catchは、指定されたエラーに限らず、すべてのエラーを捕まえて処理できます。特定のエラーだけを処理したい場合は、catch DivisionError.dividedByZeroのように書きます。
5. try?とtry!の違いに注意しよう
tryには3種類の書き方があります:
- try:標準の書き方。
do-catchとセットで使う - try?:エラーが出ても
nilを返して無視する - try!:絶対にエラーが出ないと信じて使う(もし出たらアプリがクラッシュ)
例を見てみましょう。
let result1 = try? divide(10, by: 0)
print(result1) // nil(エラーが起きたため)
let result2 = try! divide(10, by: 2)
print(result2) // 5(エラーが出なかったので成功)
try?は安全ですが、エラーの詳細が分かりません。try!は便利ですが、使い方を間違えるとアプリが止まるので注意しましょう。
6. throwing関数と普通の関数の違い
普通の関数はエラーを返すことができません。何か問題が起きたとしても、戻り値の中でエラーを表現する必要があります。一方、throwing関数は、エラーが起きたらすぐにthrowして処理を中断し、呼び出し元に知らせることができます。
そのため、「失敗する可能性がある処理」はthrowing関数で書くと、コードの読みやすさや安全性が高くなります。
7. throwing関数はどんな場面で使う?
以下のような状況では、throwing関数がよく使われます:
- ファイルの読み書きで失敗する可能性があるとき
- ユーザーの入力値が不正なとき
- サーバーからのデータ取得で通信エラーが出る可能性があるとき
- データベースの操作で失敗することがあるとき
プログラムを作る上で、「うまくいかなかったとき」に備えて処理を書いておくことはとても大切です。Swiftではthrowing関数とエラーハンドリングを使って、こうした不具合にしっかり対応できます。
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アプリ開発入門