Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to catch exceptions in your ZF2 controllers?

I've setup the ZendSkeletonApplication with ZF 2.0.3 and I am unable to catch exceptions in my controllers. For instance if I put the below piece of code in module/Application/src/Application/Controller/IndexController.php:

public function indexAction() {
    echo "BEFORE\n";
    try {
        throw new \Exception("My exception");
    } catch (Exception $e) {
        echo "Caught exception $e\n";
        exit;
    }

and access the page I get:

BEFORE
An error occurred
An error occurred during execution; please try again later.
Additional information:
Exception

File:

    module/Application/src/Application/Controller/IndexController.php:25

Message:

    My exception

the ViewModel kicks in and displays the exception, effectively preventing me from catching it.

How can I catch exceptions in ZF2 controllers?

like image 946
Max Avatar asked Oct 28 '12 11:10

Max


1 Answers

You are throwing PHP's generic Exception

throw new \Exception("My exception");

but you catch the Exception from the current namespace

} catch (Exception $e) {

Assuming your controller is in Application\Controller, you either have to declare

use \Exception;

above your class to import the global Exception into the current namespace or

} catch (\Exception $e) {

to catch PHP's global Exception.

like image 158
Gordon Avatar answered Nov 15 '22 21:11

Gordon