<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><blockquote type="cite" class=""><div class="">On Jan 7, 2016, at 12:27 PM, Brent Royal-Gordon via swift-users <<a href="mailto:swift-users@swift.org" class="">swift-users@swift.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class=""><blockquote type="cite" class="">IMO, Java has it right - let the API designer decide which approach to take.<br class=""></blockquote><br class="">That's a frankly laughable misreading of the Java story. The Java story is that they wanted everyone to use checked exceptions, but the users loathed them so much that they found hacks to get around the checked exception system</div></div></blockquote></div></div></div></blockquote></div><br class=""><div class="">Do you really believe that you can stop the "users" who "loathed them so much" from doing what they want to do with Swift? Hubris isn't a strong enough word to describe that attitude.</div><div class=""><br class=""></div><div class="">FWIW, I've already started down the path of dealing with the lack of unchecked <whatever-you-call-em>s by using the following code:</div><div class=""><br class=""></div><div class=""><font face="Courier New" class=""><b class="">func add(p1: String, _ p2 Any) {</b></font></div><div class=""><font face="Courier New" class=""><b class=""> try! addWithThrows(p1, p2)</b></font></div><div class=""><font face="Courier New" class=""><b class="">}</b></font></div><div class=""><font face="Courier New" class=""><b class=""><br class=""></b></font></div><div class=""><font face="Courier New" class=""><b class="">private func addWithThrows(p1: String, _ p2 Any) throws {</b></font></div><div class=""><font face="Courier New" class=""><b class=""> // code that handles many types for p2, followed by return for each of the valid types</b></font></div><div class=""><font face="Courier New" class=""><b class=""> throw Exception("Invalid type") /* for those types not supported which is a programmer error */</b></font></div><div class=""><font face="Courier New" class=""><b class="">}</b></font></div><div class=""><font face="Courier New" class=""><b class=""><br class=""></b></font></div><div class=""><font face="Courier New" class=""><b class="">public class Exception: ErrorType {</b></font></div><div class=""><font face="Courier New" class=""><b class=""> init() {</b></font></div><div class=""><font face="Courier New" class=""><b class=""> }</b></font></div><div class=""><font face="Courier New" class=""><b class=""> init(_ msg: String) {</b></font></div><div class=""><font face="Courier New" class=""><b class=""> }</b></font></div><div class=""><font face="Courier New" class=""><b class="">}</b></font></div><div class=""><br class=""></div><div class="">You can laugh all you at my OPINION about Java's checked and unchecked, but in the end, the great unwashed masses of programmers do whatever they believe is best to build their software, regardless of what programming languages designers believe or try to force upon them.</div></body></html>