<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="" dir="auto">There are established guidelines for Swift error handling. The guidance is that returning nil is appropriate when your function could fail due to simple domain errors, for instance passing a negative value as a parameter where they aren't allowed.<div class=""><br class=""></div><div class="">The duality is that an error reported through the throwing mechanism should be non-trivial. For that reason, I am wary of using the try? keyword in general (as it discards potentially meaningful information) and I'm happy that initializers are allowed to be failable.<br class=""><div class=""><div class=""><div class="">
<br class="Apple-interchange-newline"><span style="color: rgb(0, 0, 0); font-family: 'Lucida Grande'; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; display: inline !important; float: none;" class="">Félix</span>
</div>

<br class=""><div><blockquote type="cite" class=""><div class="">Le 3 mars 2016 à 15:40:07, Haravikk via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; a écrit :</div><br class="Apple-interchange-newline"><div class=""><div class=""><br class=""><blockquote type="cite" class="">On 3 Mar 2016, at 09:20, Brent Royal-Gordon &lt;<a href="mailto:brent@architechies.com" class="">brent@architechies.com</a>&gt; wrote:<br class="">it's really nice to be able to use if-let, guard-let, or ?? to handle them instead of having to write an entire do/catch block.<br class=""></blockquote><br class="">What’s wrong with:<br class=""><br class=""><span class="Apple-tab-span" style="white-space:pre">        </span>guard let myInstance = try? ErrorThrowingType() else { return }<br class=""><br class="">This has the exact same flexibility, and works just as well with the ?? operator as a failable initialiser, in fact that’s one of the main reasons why try? was added I think.<br class=""><br class="">Personally I think what it boils down to for me is that these initialisers are failing, which means that an error has occurred, which means that they should use error handling. On the other side I don’t see optionals as representing errors (and they shouldn’t be used to anymore IMO), but instead the result of something that doesn’t have to return a value (but has been used correctly).<br class="">_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class="">https://lists.swift.org/mailman/listinfo/swift-evolution<br class=""></div></div></blockquote></div><br class=""></div></div></div></body></html>