Any kind of "expected" failure of a gateway call should return a `Response#success=false`. Any kind of unexpected/not foreseen failure should raise an exception since it generally indicates a gateway's response format has radically changed, the gateway is down, or there's a bug in ActiveMerchant, all of which are really error conditions, not failure conditions.

Does that help clarify?