[swift-evolution] [Idea] Add forced conversion for Error catching pattern matching

Tyler Fleming Cloutier cloutiertyler at aol.com
Sun Mar 20 15:26:20 CDT 2016


I recall that there was quite a bit of discussion a while back about adding typed error declarations for methods that throw for the purpose of exhaustive pattern matching on errors.

There were interesting arguments on either side, and I think that the result was to maintain the status quo. There’s still the issue of having to add the extra catch statement to every do block for exhaustive matches.

Would it be wise to allow force conversion for the cases in which the developer believes the match is exhaustive? ie

do {
    let action = chooseAction(game)
    game = try game.applyAction(action)
} catch let e as ActionError {
    game.failedAction = e
} catch _ {
    fatalError(“This is an unfortunate bit of noise :/")
}

becomes

do {
    let action = chooseAction(game)
    game = try game.applyAction(action)
} catch let e as! ActionError {
    game.failedAction = e
}


Also as a brief aside, it’s not super intuitive to me that the syntax for the catch pattern matching wildcard is 

catch _

whereas it is

default
 
for switches. I think I saw Chris mention somewhere that default was chosen because of it’s wide familiarity. Does anyone recall the reason?

Thanks,

Tyler
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160320/9a6f2e76/attachment.html>


More information about the swift-evolution mailing list