[解決済み] 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
を作成し、カスタムメッセージとともに投げるファクトリーメソッドを作成することができます。
関連
-
[解決済み] カスタムオブジェクトを含むNSMutableArrayをソートするにはどうすればよいですか?
-
[解決済み] iOSのステータスバーの文字色を変更する方法
-
[解決済み] Swiftでindexとelementでループを反復させる方法
-
[解決済み] Xcodeにおけるバージョンとビルドの比較
-
[解決済み] Swift カスタムオブジェクトの配列をプロパティ値でソートする方法
-
[解決済み] 「GCC使用時に「Xcode/iOSのライセンスに同意するには管理者権限が必要です。rootでsudoを使用して再実行してください。
-
[解決済み] iOSとWatchKitで画像のtintColorを変更する方法
-
[解決済み] UIImageのサイズを変更する最も簡単な方法?
-
[解決済み] Swift 3でディスパッチキューを作成する方法
-
[解決済み】Swift Stringの文字を置換する方法はありますか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
iOSコンパイルポッドでエラー CocoaPods could not find compatible versions for pod "XXXXX" が報告される。
-
[解決済み] iOSのステータスバーの文字色を変更する方法
-
[解決済み] NSの接頭辞はどういう意味ですか?
-
[解決済み] UITextViewのマージン/パディングをなくす方法
-
[解決済み] UIDevice uniqueIdentifierは非推奨 - どうしたらいいの?
-
[解決済み] Swiftを使用してアプリのバージョンとビルド番号を取得するにはどうすればよいですか?
-
[解決済み] iOS 7でステータスバーとナビゲーションバーがビューの境界を越えて表示される
-
[解決済み] iPadマルチタスクのサポートには、これらの方向が必要です。
-
[解決済み] ぼかしの入ったオーバーレイビューの作成
-
[解決済み]SwiftでErrorタイプでローカライズされた説明を提供する方法は?