私はガードステートメントを呼び出すときはいつでもメソッド呼び出しを得ることができるように、ガードステートメントをオーバーライドするために何かできるかどうかを知りたいと思っています。例については -ガード・ステートメントをオーバーライドする方法はありますか?
guard let string = testString else {
BuggerManager.send(exType: .invalidArgumentException, exMessage: "testString is nil")
return
}
print(string)
// it happened very rare
@IBAction func toErrorDivideHandled() {
do {
let some = try self.divide(x: 10, y: 0)
print(some)
} catch let error {
BuggerManager.send(exType: .decimalNumberDivideByZeroException, exMessage: error.localizedDescription)
}
}
OR
我々はグローバルガードタイプのメソッドを作成することができます。はいの場合、どうすればそれを作成できますか?前もって感謝します。私はあなたが私のポイントを得ることを望む。
enum GuardError: Error {
// In practice, put arguments on this case
// that you use to describe the error
case doesntExist
}
func guardIt<T>(_ closure:() -> T?) throws -> T {
guard let ret = closure() else { throw GuardError.doesntExist }
return ret
}
は、あなたがそのようにようにこれを使用することができます:
あなたがしようとしていることのいくつかのコード例を表示できますか? – Sweeper
私は、1つのメソッド呼び出しでキューに例外を追加する小さなフレームワークを作成しました。ここまで、例外のメソッドがキューに追加され、いつかそれがサーバーに送信されます。私が今やっていることは、それ以外のすべてのガードの中でメソッドを呼び出すことです。私が欲しいのは、ガードステートメントをオーバーライドして、すべてのガードブロックに同じメソッドを入れていないようにすることです。あなたが私のコメントを理解していただければ幸いですこの質問に興味を持ってくれてありがとう。 –
あなたは何を厳守していますか?これは実際にXY問題のように聞こえる。あなたのガードステートメントのいくつかを示してください。 – Sweeper