[swift-evolution] Exceptions with guard-clause as shorthand instead of do/try/catch

Matis Schotte matis.schotte at db.com
Thu Mar 3 10:58:16 CST 2016


Classification: Public



Hello,

I stumbled upon the exception handling and the quite practical guard 
keyword for early-exiting a function.
Unfortunately, the try? discards an exception, if there is one.

What I am interested in is to use the shorter guard-style instead of the 
lengthy do/try/catch-approach, example follows:

Current situation is (example #1):
let smth: AnyObject?
do {
    smth = try myThrowingFunc()
} catch let error {
    print(error) // here I can access the exception, but this code is 
quite big and not very intuitive, and the result will always be an 
optional
    return
}

I would like to use it like this(example #2):
guard let smth = try? myThrowingFunc() else {
    print(error) // in swift 2.2 the exception is discarded, so no access 
possible, but this code is much cleaner
    return
}

Advantages are better readability because of shorter code, and to avoid 
the optionals from ex.#1 and therefore alot of ! and ? afterwards. In ex#2 
I either have the smth constant, or the function stops and returns. In 
ex#1, I will have an optional with a value, which again needs a few 
additional steps to unwrap and use.

So I would love the ability to access exceptions (maybe with a standard 
variable name) inside a guard-clause

I have created a question on stackoverflow here: 
http://stackoverflow.com/questions/35776383
But have answered that already myself. I would love to get some feedback 
from you guys, maybe you have some other tips for me.


Kind regards,
Matis Schotte

____________________________________________________



Matis Schotte
Mobile Solutions | Software Engineer

Deutsche Bank AG
Theodor-Heuss-Allee 72, 60486 Frankfurt am Main, Germany
Email matis.schotte at db.com



-- 

Informationen (einschließlich Pflichtangaben) zu einzelnen, innerhalb der EU tätigen Gesellschaften und Zweigniederlassungen des Konzerns Deutsche Bank finden Sie unter http://www.deutsche-bank.de/de/content/pflichtangaben.htm. Diese E-Mail enthält vertrauliche und/ oder rechtlich geschützte Informationen. Wenn Sie nicht der richtige Adressat sind oder diese E-Mail irrtümlich erhalten haben, informieren Sie bitte sofort den Absender und vernichten Sie diese E-Mail. Das unerlaubte Kopieren sowie die unbefugte Weitergabe dieser E-Mail ist nicht gestattet.

Please refer to http://www.db.com/en/content/eu_disclosures.htm for information (including mandatory corporate particulars) on selected Deutsche Bank branches and group companies registered or incorporated in the European Union. This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and delete this e-mail. Any unauthorized copying, disclosure or distribution of the material in this e-mail is strictly forbidden.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160303/66708410/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/gif
Size: 374 bytes
Desc: not available
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160303/66708410/attachment.gif>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: image/gif
Size: 1124 bytes
Desc: not available
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160303/66708410/attachment-0001.gif>


More information about the swift-evolution mailing list