> On Aug 26, 2016, at 8:39 AM, Félix Cloutier via swift-evolution > <[email protected]> wrote: > > Hi all, > > Currently, a function that throws is assumed to throw anything. There was a > proposal draft last December to restrict that. The general idea was that > you'd write, for instance: > >> enum Foo: ErrorProtocol { >> case bar >> case baz >> } >> >> func frob() throws Foo { >> throw Foo.bar // throw .bar? >> } > > If you `catch Foo` (or every case of Foo), now that the compiler can verify > that your catch is exhaustive, you no longer have to have a catch-all block > at the end of the sequence. > > This impacts the metadata format and has implications on resilience, which > leads me to believe that the discussion could qualify for the phase 1 of > Swift 4. If this is the case, I'd be interested in pulling out the old > discussions and seeing where we left that at.
Typed throws is largely additive, since an API that `throws` today can be compatibly changed to `throws T` in the future, so this isn't an absolute ABI issue. -Joe _______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
