[swift-users] [swift-evolution] Best way to handle escaping function that might throw

Howard Lovatt howard.lovatt at gmail.com
Thu Jan 12 18:11:15 CST 2017


@Anton, Yes that would work and we would get typed throws, which I like. As
an aside, I think E would have to be constrained to be an Error, `<E:
Error>`, and maybe `throws<E>` reads better because you are used to types
in angle brackets.

  -- Howard.

On 13 January 2017 at 08:32, Anton Zhilin <antonyzhilin at gmail.com> wrote:

> The best way to deal with such situations should be typed throws. Then
> rethrows should be removed and replaced with generics in throws clause. E
> == Never ⇔ function does not throw.
>
> struct FStore<E> {
>     let f: () throws(E) -> Void
>     init(_ f: @escaping () throws(E) -> Void) { self.f = f }
>     func call() throws(E) { try f() }
> }
>
> let store = FStore<Never>({ print("Hello") })
> store.call()
>
> [Phase2]
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20170113/7506ca5f/attachment.html>


More information about the swift-users mailing list