Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
252 views
in Technique[技术] by (71.8m points)

php - 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
";
    try {
        throw new Exception("My exception");
    } catch (Exception $e) {
        echo "Caught exception $e
";
        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?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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 ApplicationController, 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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...