These I think add noise in terms of someone reading the code. Now not only do they need to know Swift’s error handling mechanism, but also they have to be familiar with my custom wrapper around it.
> On Mar 21, 2016, at 8:26 PM, Brent Royal-Gordon <br...@architechies.com> > wrote: > >> 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 :/") >> } > > If you're just worried about the noise... > > try! { > do { > let action = chooseAction(game) > game = try game.applyAction(action) > } > catch let e as ActionError { > game.failedAction = e > } > }() > > Or if that's too much syntax: > > func mustSucceed<Return>(function: () throws -> Return) -> Return { > return try! function() > } > > mustSucceed { > do { > let action = chooseAction(game) > game = try game.applyAction(action) > } > catch let e as ActionError { > game.failedAction = e > } > } > > Or, if you use this specific ActionError logic widely, you can put that in a > function: > > func catchActionError<Return>(function: () throws -> Return) -> Return? > { > do { > return try function() > } > catch e as ActionError { > game.failedAction = e > return nil > } > catch { > fatalError() > } > } > > catchActionError { > let action = chooseAction(game) > game = try game.applyAction(action) > } > > -- > Brent Royal-Gordon > Architechies > _______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution