【Swift入門】do-catchを使って例外処理をしよう

2021年4月4日

do-catchとは

do-catchとはエラー処理をするための構文です。

エラーが出るかもしれない関数などを呼び出すときに使います。

do-catchは

do {
    try エラーが出るかもしれない関数} catch {    エラーが出た時の処理}

と記述します。

実際に使ってみる

それでは、do-catchを実際に使ってみましょう。

新しくPlaygroundを作ってください。

import UIkit

以外は不要なので、消してしまいましょう。

それでは、やっていきましょう。

今回は、エラーかもしれない関数を作って、do-catchを使って呼び出してみようと思います。

まずは、エラーかもしれない関数を作ります。

var canConnectServer = true

func connectServer() throws{
    if canConnectServer {
        print(“サーバーと接続”)
    }
    else {
        throw NSError()
    }
}

と記述しましょう。

コードについて説明していきます。

まず、

var canConnectServer = true

は、Bool型の変数で、trueが格納されています。

この変数はエラーかもしれない関数の中で使います。

次に、

func connectServer() throws{
    if canConnectServer {
        print(“サーバーと接続”)
    }
    else {
        throw NSError()
    }
}

でエラーかもしれない関数を作っています。

エラーかもしれない関数を作るときは関数名()の右横に

throws

と記述します。

関数の中身を見ていきましょう。

if canConnectServer {    print(“サーバーと接続”)}

という記述は、先ほど作ったBool型の変数『canConnectServer』の値がtrueなら『サーバーと接続』とコンソールに出力されるという意味になります。

else {
    throw NSError()}

という記述は、それ以外の場合、つまり変数『canConnectServer』の値がfalseなら

throw NSError()

が読み込まれ、エラーを投げます。

今回作ったconnectServerのような、エラーを投げるかもしれない関数は普通の関数のように呼び出すことができません。

呼び出したいときは、do-catchのようなエラー処理をする記述を使って呼び出します。

do-catchを使って、先ほど作った関数connectServerを呼び出してみましょう。

func getData() {
    do {
        try connectServer()
        print(“データを取り出す”)
    } catch {
        print(“エラーの時の処理”)
    }
}

と記述しましょう。

コードについて説明していきます。

まず、getDataという名前の関数を作って、

その中でdo-catchを使っています。

doの中では

ConnectServer()

が使えるか試みて、エラーを投げなければ

print(“データを取り出す”)

を読み込み、コンソールに『データを取り出す』と出力します。

エラーを投げたら、catchが呼ばれます。

catchの中の処理は

print(“エラーの時の処理”)

で、読み込まれたら、コンソールに『エラー時の処理』と出力されます。

それでは、do-catchが使われた関数getDataを使ってみましょう。

getData()

と記述しましょう。

この状態で実行するとcanConnectServerの値が『true』なので

エラーが投げられることはなく、『サーバーと接続』

『データを取り出す』

コンソールに出力されるはずです。

この状態で実行してみましょう。

実行ボタンを押してください。

すると、予想通り『サーバーと接続』と『データを取り出す』がコンソールに出力されました。

次に、変数canConnectServerの値を

falseに変えて実行してみましょう。

trueと記述されている部分をfalseに変えます。

この状態で実行すると関数connectServerはエラーを投げるので、

catchが呼ばれます。

そして、その処理である

print(“エラーの時の処理”)

が呼ばれて、コンソールには『エラーの時の処理』と出力されるはずです。

この状態で実行してみましょう。

実行ボタンを押してください。

すると予想通り、『エラーの時の処理』と出力されましたね。

このようにdo-catchを使えば、エラー処理を行うことができます。