1. ホーム
  2. ios

[解決済み] Swiftでカスタムメッセージを持つエラー/例外をスローする最も簡単な方法?

2022-04-20 01:59:16

質問

私は、私が他の複数の言語で行うのに慣れているSwiftで何かをしたい:カスタムメッセージで実行時例外をスローします。 例えば、(Javaで)。

throw new RuntimeException("A custom message here")

ErrorTypeプロトコルに準拠したenum型を投げることができるのは理解していますが、投げるエラーの種類ごとにenumを定義する必要はないでしょう。 理想は、上記の例をできるだけ忠実に再現することです。 を実装したカスタムクラスを作成することを検討しました。 ErrorType プロトコル しかし、そのプロトコルが何を要求しているのかさえもわからないのです。 アイデアはありますか?

解決方法は?

最もシンプルな方法は、おそらく 1 カスタム enum を1つだけ使って case を持っていること。 String が付いている。

enum MyError: ErrorType {
    case runtimeError(String)
}

あるいは、Swift 4の時点では。

enum MyError: Error {
    case runtimeError(String)
}

使用例としては、次のようなものがあります。

func someFunction() throws {
    throw MyError.runtimeError("some message")
}
do {
    try someFunction()
} catch MyError.runtimeError(let errorMessage) {
    print(errorMessage)
}

既存の Error タイプは、最も一般的なものは NSError を作成し、カスタムメッセージとともに投げるファクトリーメソッドを作成することができます。