How to catch exceptions in your ZF2 controllers?
15,546
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.
Author by
Max
Analytics consultant available for hire. More info: https://maxcorbeau.com
Updated on July 26, 2022Comments
-
Max almost 2 years
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 inmodule/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? -
Max over 11 yearsSide questions: will doing
catch (\Exception $e) {
catch every exception that may occur, or just those that extend theException
class (e.g. would it catchclass ORMException extends Exception
?) If not, is there a way of catching any exception (and is it worth trying to do so, since I assume libraries that are probably coded should extendException
for their custom exception handling, or am I mistaken?) -
Sam over 11 yearsSee GordonMs comment for that
-
Gordon over 11 years@user since all Exceptions extend PHP's global Exception, catch \Exception will catch any exception.