> There's no reason we couldn't do some tooling work to expose emergent 
> information about what kinds of errors are thrown by the current 
> implementation of a function, and maybe even check that against the current 
> documentation.  Certainly, it should be possible to document particularly 
> interesting errors that a function might throw.
I'd prefer moving some complicated and controversial questions out of the 
language level, and probably, this might be such a case — but I think the 
preferred syntax would not be "throws(NetworkError, MyError) func mayFail() 
throws", but rather something that looks much more integrated ("func mayFail() 
throws(NetworkError, MyError)")

> I'm just challenging the idea that this should be reflected and enforced in 
> the type system.
Yes, I think this might be a can of worms — just imagine rethrows, where some 
errors will always be caught, so that ultimately, we would steer towards some 
kind of type algebra just for errors...

>> Typed throws could also help to lessen the tight coupling to Objective-C:
>> Being forced to declare conformance to a protocol without requirements or 
>> even public methods feels very awkward to me.
> 
> Error is not about Objective-C interop; we could make the feature work 
> without a protocol, and in fact the protocol alone isn't sufficient for what 
> we try to do with it.  The protocol's value is mostly communicative, a way of 
> making it obvious that a type is meant to be thrown
I guess nearly all uses look like "XYError: Error", so I really don't see much 
value in the protocol; but to me, it always feels a little bit dirty when 
language features are entwined with certain types, so it might be just a 
personal oddity.

>> If people want to build huge lists of possible errors… why not? As long as 
>> I'm still able to write my own throwing functions as today, I'm fine with 
>> that.
> 
> Language features have to meet a higher bar than "why not?".
That was more geared towards something I'd consider as derailed use — but it 
seems we agree that typed throws don't have to be something to bother the 
compiler with.

- Tino
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to