質問: Array(results) return array } catch { print(error) } } ```
回答: やはり、質問者さんがどのようにしたいか次第ですが、takabosoftさんがご提案された方法のほかは、 **1) `Optional`型を返すメソッドとして定義し、`catch`内部で`nil`を戻す** 呼び出し側で`nil`を判別して処理を変える **2) `do-catch`を使わずに呼び出し元に投げる** 呼び出し元でエラーを捕捉して処理を変える **3) `fatalError()`でその場で落ちる** 落ちたらそれでおしまい があると思います。 エラーが起きた後の処理をどのようにするのかによって選択肢は決まるかと思います。 ``` // エラーを投げるダミーの関数(Realm()の代わり) struct myError: Error { } func myErrFunc() throws -> Int { throw myError() // 以下の行には到達しないので warning が出るが、ここでは無視 return 1 } // Realm を呼び出す関数でも throw する func myFunc() throws -> Int { // do-catch でエラーを捕捉せず呼び出し元に投げる // この例だと myErrFunc() は必ずエラーを投げる関数なので、ここで例外が発生する let a = try myErrFunc() return a } // メイン do { let a = try myFunc() print("エラーなし: a = \(a)") } catch { print("エラー発生") } ```