CancellationError
は isCancelled == true
のときに Task.checkCancellation
が投げるエラーというだけで、キャンセルされたときに throw
されるエラーは CancellationError
とは限らないという仕様なのかな? catch let error as CancellationError
でキャンセルをチェックするのではなく、 catch
節の中で Task.isCancelled
でチェックするのが正しい? (edited)URLSession
の data(from:)
がどこで実装されてるのか見つからない・・・。CancellationError()
CancellationError
を throw
しなくても良い?でも CancellationError
CancellationError
を throw
することが期待されている? URLSession.data(from:)
が cancel
時に CancellationError
を throw
しないのはお行儀が悪い? https://github.com/apple/swift-evolution/blob/main/proposals/0304-structured-concurrency.md#cancellation
(edited)CancellationError
, to communicate that the task was cancelled. CancellationError
として検出できるように、くらいの意味まで持つならキャンセル時に独自のエラーを throw
するのではなく CancellationError
を throw
すべきとなりそうだけど。
do { try await foo() } catch let error as CancellationError { // キャンセル時の処理 } catch { // エラーハンドリング }
とするよりも do { try await foo() } catch { if Task.isCancelled { // キャンセル時の処理 } else { // エラーハンドリング } }
がベストプラクティス? (edited)