if let expects an optional type to unwrap, but try either succeeds (and returns a non-optional value) or fails by throwing an error. This makes do-catch the appropriate construct for handling errors in this case.
if let