在生产环境中使用异常:尝试捕获阻止“返回”布尔值?

The app is built on the MVC pattern, so my controllers are separate from my models.

I am using two payment gateways, Stripe and PayPal and have moved the API code into a model called Payment_Model.php.

Both functions have huge try/catch blocks that throw all manner of errors when a payment fails which is a good thing for me, not so for a customer...

Here is a try catch block example

     try {

        Stripe::setApiKey($this->config->item('stripe_secret_key'));

        $customer = Customer::create([
            'email'  => 'customer@example.com',
            'source' => $this->input->post('stripe_token'),
        ]);

        $charge = Charge::create([
            'customer'    => $customer->id,
            'amount'      => $option->price,
            'currency'    => 'eur',
            "description" => "Demo Transaction", // @TODO
        ]);

    } catch (Exception $e) {

    } catch (Stripe_CardError $e) {
        throw new Exception($e);
    } catch (Stripe_InvalidRequestError $e) {
        throw new Exception($e);
    } catch (Stripe_AuthenticationError $e) {
        throw new Exception($e);
    } catch (Stripe_ApiConnectionError $e) {
        throw new Exception($e);
    } catch (Stripe_Error $e) {
        throw new Exception($e);
    } catch (Exception $e) {
        throw new Exception($e);
    }

I don't want to display these errors or exceptions in my production environment... instead I would like to replace throw new Exception($e) with false so that I can call the model function in my controller and if something goes wrong I can redirect the user to a decent error page...

So my question is this:

Can I return a boolean IF something bad is caught so that I can either redirect to a success page or an error page in my controller? Or am I missing the point of using exceptions?