私はデータセットを管理するシングルトンを持っています。何らかの理由でデータが利用できない場合は、例外をスローすることでシングルトンの作成を失敗させたいと思います。コンパイラはゲッターをthrows
とマークするファンではありません注:私はこの他の方法を処理することができたが、今でも可能であれば私は好奇心が強いです。シングルトンイニシャライザから例外をスローする
0
A
答えて
1
これは私の運動場のコードのように、あなたのシングルトンのすべての呼び出しをtryで実行する必要があります。
enum FooError : Error {
case RuntimeError(String)
}
class Foo {
static func defaultFoo() throws -> Foo {
if let instance = Foo("Success") {
return instance
} else {
throw FooError.RuntimeError("Singleton is not created")
}
}
private init?(_ parameter: String?) {
if let _ = parameter {
print("Init Succeded")
} else {
print("Init failed")
return nil;
}
}
}
try Foo.defaultFoo()
+0
Sryは "answer"を使用して適切な書式を設定する必要があります。それ以外の場合はコードを読み取ることができませんでした。 – NSDmitry
+0
ありがとう@NSDmitry。あなたが物件ゲッターから投げることができないので、私はこれが私が得ることができる最も近いものだと思います。 – RobertJoseph
関連する問題
- 1. Process.Exitedハンドラから例外をスローする
- 2. WebGLから例外をスローする
- 3. =例外をスローする例外
- 4. Mockito例外をスローする
- 5. openFileOutput例外をスローする
- 6. バブルソート例外をスローする
- 7. カスタム例外をスローする
- 8. コンテンツプロバイダ例外をスローする
- 9. 例外をスローする
- 10. parseObject.saveInBackground()スロー例外
- 11. eglGetDisplay()スロー例外
- 12. DLL境界を越えてコンストラクタから例外をスローする
- 13. RealProxyのサービス契約からWCFフォールト例外をスローする
- 14. .NETのコンストラクタから例外をスローする
- 15. PowerMock @RunWith(PowerMockRunner.class)から例外をスローする注釈
- 16. Guava EventBusサブスクライバから例外をスローする
- 17. C++でコンストラクタから例外をスローする
- 18. フォームテンプレートからのフィールド「トラッキング」が例外をスローする
- 19. コントローラーで実行されたコマンドから例外をスローする
- 20. Bytebuddyインターセプト例外スロー
- 21. ライブラリのスロー例外
- 22. C++/C#例外スロー
- 23. Java再スロー例外
- 24. C++例外のスロー
- 25. Androidのスロー例外
- 26. コンストラクタとスロー例外
- 27. スプリングデータJPAスロー例外
- 28. 例外と例外のスロー。<T>?
- 29. 春4 @EnableTransactionManagementアノテーション例外スロー例外
- 30. @scheduled cron式の例外スロー例外
私はあなたのタスクは 'Failable Initializers' https://developer.apple.com/library/content/documentation/Swift/Conceptual/Swift_Programming_Language/Initialization.htmlのための完璧だと思う – NSDmitry
Iこれが1つの方法であることに同意しますが、この特定のケースでは、アプリケーションのより高いレベルで障害を処理できるように、例外をバブルアップする方がはるかに良いでしょう。 'Foo.default'を呼び出すたびに' if let'を使う必要もありません。 – RobertJoseph
'default'を関数にすることができますし、それによって' throw'エラーが発生する可能性はありますか? – NSDmitry