&quot;throws&quot; makes more sense closer to the end of the function signature because it&#39;s an outcome like the return type. Swift&#39;s function syntax is fairly consistent in this regard: &lt;modifiers&gt; func &lt;name&gt;(&lt;inputs&gt;) &lt;outcomes&gt;.<br><br>Personally, I think the keyword is fine where it is and this is the kind of change where there would have to be *significant* advantages to changing it. I think it would be hard to make the case that a change at this point would warrant breaking existing code.<br><div class="gmail_quote"><div dir="ltr">On Mon, Dec 26, 2016 at 10:59 AM Lucas Neiva via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org">swift-evolution@swift.org</a>&gt; wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="auto" class="gmail_msg"><div class="gmail_msg"></div><div class="gmail_msg"><div class="gmail_msg"><span style="background-color:rgba(255,255,255,0)" class="gmail_msg">I like &quot;throwing&quot; as a prefix. It&#39;s reads well and fits very nicely with &quot;mutating&quot;.</span></div><div class="gmail_msg"><span style="background-color:rgba(255,255,255,0)" class="gmail_msg"><br class="gmail_msg"></span></div><div class="gmail_msg"><span style="background-color:rgba(255,255,255,0)" class="gmail_msg">Remembering where to put the keyword for is also easier if it&#39;s at the beginning, where it fits grammatically as &quot;throwing func&quot;.</span></div></div></div><div dir="auto" class="gmail_msg"><div class="gmail_msg"><br class="gmail_msg">On 26 Dec 2016, at 19:53, Micah Hainline via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="gmail_msg" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br class="gmail_msg"><br class="gmail_msg"></div><blockquote type="cite" class="gmail_msg"><div class="gmail_msg"><div class="gmail_msg"></div><div class="gmail_msg">I&#39;d prefer the placement at the very end, I do think it would improve readability, especially when taking closures as parameters and returning closures. However, I don&#39;t think the value would be worth the cost of breaking existing code. At the least if this were to go forward I would think we&#39;d want both styles to work even if one was preferred or the other was deprecated. </div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg"><br class="gmail_msg">On Dec 26, 2016, at 12:41 PM, Derrick Ho via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="gmail_msg" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br class="gmail_msg"><br class="gmail_msg"></div><blockquote type="cite" class="gmail_msg"><div class="gmail_msg"><div class="gmail_msg">I personally do not see anything wrong with its current placement.<br class="gmail_msg"><br class="gmail_msg">It may be there because it was based on an existing cocoa pattern from objective-c<br class="gmail_msg"><br class="gmail_msg">- (NSString *)bazWithError:(NSError **)error { ... }</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Because objective c could only return one thing, using pointer-to-pointer was needed to deliver more than one.</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">When swift came along it became this...</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">func baz(error: NSErrorPointer) -&gt; String</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">The style felt old-fashioned and was replaced with throw.</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">func baz() throws -&gt; String</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">The evolution is consistent.  The pattern is familiar.  I think we should keep the placement of throw as it is.</div><div class="gmail_msg"><br class="gmail_msg"><div class="gmail_quote gmail_msg"><div class="gmail_msg">On Mon, Dec 26, 2016 at 9:38 AM thislooksfun via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="gmail_msg" target="_blank">swift-evolution@swift.org</a>&gt; wrote:<br class="gmail_msg"></div><blockquote class="gmail_quote gmail_msg" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class="gmail_msg">Hello Swifters,<div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">I&#39;ve been writing a lot more Swift code recently, and I have found that the default placement of the &#39;throws&#39; declaration is often confusing, especially to those of us switching from languages where the type of errors thrown is explicitly defined (like Java)</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">For example,</div><div class="gmail_msg"><div class="m_2577537579941429844m_7524104568081187879m_-7031938144007969227bloop_markdown gmail_msg" style="font-family:Helvetica,Arial;font-size:13px;background-color:rgb(254,254,254)"><pre style="margin-top:15px;margin-bottom:15px;font-family:Menlo,Consolas,&#39;Liberation Mono&#39;,Courier,monospace;font-size:10pt;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;background-color:rgb(248,248,248);color:inherit;border:1px solid rgb(204,204,204);overflow:auto;padding:4px 8px;word-break:normal;word-wrap:normal" class="gmail_msg">// This is pretty clear, this can throw an error<br class="gmail_msg"><br class="gmail_msg">func foo() throws<br class="gmail_msg"><br class="gmail_msg">{ ... }<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">// Also pretty clear, this returns a String<br class="gmail_msg"><br class="gmail_msg">func bar() -&gt; String<br class="gmail_msg"><br class="gmail_msg">{ ... }<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">// Confusing. Does this throw a String? Does it return a String? Does it do both?<br class="gmail_msg"><br class="gmail_msg">// I personally keep reading this as &#39;this can throw a String&#39;<br class="gmail_msg"><br class="gmail_msg">func baz() throws -&gt; String<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">// Equivalent code in Java (not a model, just for clarification of why the above is confusing)<br class="gmail_msg"><br class="gmail_msg">String baz() throws StringFormatException</pre></div><div class="gmail_msg">I therefore suggest either tweaking the syntax around, or moving, the `throws` keyword to avoid this confusion.</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">Some ideas I&#39;ve had:</div><div class="gmail_msg"><pre style="color:inherit;margin-top:15px;margin-bottom:15px;font-family:Menlo,Consolas,&#39;Liberation Mono&#39;,Courier,monospace;font-size:10pt;border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;background-color:rgb(248,248,248);border:1px solid rgb(204,204,204);overflow:auto;padding:4px 8px;word-break:normal;word-wrap:normal" class="gmail_msg">// Add a comma to separate them<br class="gmail_msg"><br class="gmail_msg">func baz() throws, -&gt; String<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">// Move `throws` to the end<br class="gmail_msg"><br class="gmail_msg">func baz() -&gt; String throws<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">// Change it to a prefix modifier (like `mutating`)<br class="gmail_msg"><br class="gmail_msg">throwing func baz() -&gt; String<br class="gmail_msg"><br class="gmail_msg"></pre></div><div class="gmail_msg">I&#39;m still not sold on any of the above syntaxes, but I would love to hear your feedback.</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg">This would affect existing code, but it would be a fairly small change that would result in very large readability improvements, especially for newcomers, and <i class="gmail_msg">especially</i> for those coming for a language such as Java.</div><div class="gmail_msg"><br class="gmail_msg"></div><div class="gmail_msg"><div style="color:rgb(0,0,0);letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;word-wrap:break-word" class="gmail_msg">-thislooksfun (tlf)</div><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"></div><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"></div></div>_______________________________________________<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg">swift-evolution mailing list<br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><a href="mailto:swift-evolution@swift.org" class="gmail_msg" target="_blank">swift-evolution@swift.org</a><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class="gmail_msg"><br class="gmail_msg"><br class="gmail_msg"></blockquote></div></div>
</div></blockquote><blockquote type="cite" class="gmail_msg"><div class="gmail_msg"><span class="gmail_msg">_______________________________________________</span><br class="gmail_msg"><span class="gmail_msg">swift-evolution mailing list</span><br class="gmail_msg"><span class="gmail_msg"><a href="mailto:swift-evolution@swift.org" class="gmail_msg" target="_blank">swift-evolution@swift.org</a></span><br class="gmail_msg"><span class="gmail_msg"><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" class="gmail_msg" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a></span><br class="gmail_msg"></div></blockquote></div></blockquote><blockquote type="cite" class="gmail_msg"><div class="gmail_msg"><span class="gmail_msg">_______________________________________________</span><br class="gmail_msg"><span class="gmail_msg">swift-evolution mailing list</span><br class="gmail_msg"><span class="gmail_msg"><a href="mailto:swift-evolution@swift.org" class="gmail_msg" target="_blank">swift-evolution@swift.org</a></span><br class="gmail_msg"><span class="gmail_msg"><a href="https://lists.swift.org/mailman/listinfo/swift-evolution" class="gmail_msg" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a></span><br class="gmail_msg"></div></blockquote></div>_______________________________________________<br class="gmail_msg">
swift-evolution mailing list<br class="gmail_msg">
<a href="mailto:swift-evolution@swift.org" class="gmail_msg" target="_blank">swift-evolution@swift.org</a><br class="gmail_msg">
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" class="gmail_msg" target="_blank">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class="gmail_msg">
</blockquote></div>