[swift-evolution] A unified error handling mechanism?

Anton Zhilin antonyzhilin at gmail.com
Sat Aug 6 10:40:31 CDT 2016


2016-08-06 2:50 GMT+03:00 Fernando Rodríguez <swift-evolution at swift.org>:

b) do/try/catch
>
> This allows you to have information about the error, but also causes the
> newly created object to be "trapped" inside a do block.
>
> Are there any plans to address this situation? I believe there should be a
> single, obvious and convenient way of handling errors in the language.
>
func attempt<T>(_ expression: @autoclosure () throws -> T, handler:
(ErrorProtocol) -> T) -> T {
    do {
        return try expression()
    } catch {
        return handler(error)
    }
}
let x = attempt(downloadDataOrThrow()) {
    print("Connection lost")
    return nil
}

It mimics guard statement. You can also have versions of attempt with
partially defined handlers, like “return nil“ or “print and crash”, or
“assert type of error”.
​
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160806/9ca55dec/attachment.html>


More information about the swift-evolution mailing list