0

I'm calling a method that I know could cause an error and I'm trying to handle the error by wrapping the code in a try/catch statement...

class TestController extends Zend_Controller_Action { public function init() { // Anything here happens BEFORE the View has rendered } public function indexAction() { // Anything `echo`ed here is added to the end of the View $model = new Application_Model_Testing('Mark', 31); $this->view->sentence = $model->test(); $this->loadDataWhichCouldCauseError(); $this->loadView($model); // this method 'forwards' the Action onto another Controller } private function loadDataWhichCouldCauseError() { try { $test = new Application_Model_NonExistent(); } catch (Exception $e) { echo 'Handle the error'; } } private function loadView($model) { // Let's pretend we have loads of Models that require different Views switch (get_class($model)) { case 'Application_Model_Testing': // Controller's have a `_forward` method to pass the Action onto another Controller // The following line forwards to an `indexAction` within the `BlahController` // It also passes some data onto the `BlahController` $this->_forward('index', 'blah', null, array('data' => 'some data')); break; } } } 

...but the problem I have is that the error isn't being handled. When viewing the application I get the following error...

( ! ) Fatal error: Class 'Application_Model_NonExistent' not found in /Library/WebServer/Documents/ZendTest/application/controllers/TestController.php on line 23 

Can any one explain why this is happening and how I can get it to work?

Thanks

1

4 Answers 4

3

use

if (class_exists('Application_Model_NonExistent')) { $test = new Application_Model_NonExistent; } else { echo 'class not found.'; } 

like @prodigitalson said you can't catch that fatal error.

Sign up to request clarification or add additional context in comments.

2 Comments

Could also throw an exception in the else as well
But he is already trying to "Catch" an exception, meaning he wants to continue processing. I guess
2

An error and an exception are not the same thing. Exceptions are thrown and meant to be caught, where errors are generally unrecoverable and triggered with http://www.php.net/manual/en/function.trigger-error.php

If you need to do some cleanup because of an error, you can use http://www.php.net/manual/en/function.set-error-handler.php

Comments

0

Thats not an exception, thats a FATAL error meaning you cant catch it like that. By definition a FATAL should not be recoverable.

Comments

0

Exception and Error are different things. There is an Exception class, which you are using and that $e is it's object.

You want to handle errors, check error handling in php-zend framework. But here, this is a Fatal error, you must rectify it, can not be handled.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.