オーバーライドされたメソッド、デリゲートメソッド、またはdataSourceメソッドなどの投げられない関数のエラー処理に問題があります。私はエラーを記録することを思いついただけで、これは良いエラー処理戦略ではありません。他の方法やアプローチなどはありますか?ありがとうございました。Swiftの非投げ込み関数でのエラー処理
EDIT:
enum SomethingError : Error{
case somethingFailed
}
var anObject : AnObject?
........
........
public func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell throws{
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", at: index)
guard let anObject = anObject else{
throw SomethingError.somethingFailed
//and maybe return unprocessed cell but you cannot return anything after "throw", or you cannot "throw" after "return"
}
.....
.....
return cell
}
あなたがいるので、このような何かを行うことはできません。collectionView:cellForItemAt:indexPathが投げ関数ではありません、それはセルを返す必要があります。ここでエラーをどのように捕捉できますか?これが問題です。ロギング経由でのみ?
編集:私が使用できることを知っていますif let
しかし私はキャッチしたい/投げる;ここにエラーを処理してください。
具体的な例が参考になります。 –
「エラー」が発生していないので定義しますか?メソッドの例はありますか? – Larme
あなたは** cellForItem'でエラーを** 'スローすることはできませんが、スローされたエラーを' catch'することはできます。基本的に、スコープを終了できるデリゲートとデータソースメソッド内のコードは避けてください。 – vadian