400番台のエラーが起きたときに意図したリダイレクトが行われない。


下記コードを実行(InputController)すると意図したリダイレクトが行われず、  
「Missing Method in UsersController  
Error: The action index is not defined in controller UsersController」  
という表示がされます。  
ErrorsControllerのindexアクションにリダイレクトするようにするにはどうすればよいでしょうか。  
※phpのバージョン5.4でCakephp2の環境です。

[code]

    class InputController extends AppController {
        public function index()
        {
            try {
              throw new Exception();
            } catch (Exception $e) {
              throw new NotFoundException();
              return;
             }
         }
    
[/code]

[code]

    App::uses('ExceptionRenderer', 'Error');
    class AppExceptionRenderer extends ExceptionRenderer {
    
        public function error400($error) {
            $this->controller->redirect(array('controller' => 'errors', 'action' => 'index'));
        }
    }
    
[/code]

[code]

    class ErrorsController extends AppController {
    
        public function index() {
        }
    }
    
[/code]




AppExceptionRenderer を、有効にしていますか？

AppExceptionRenderer を有効にするには、 `app/Config/core.php` の `Exception.renderer`
オプションに `AppExceptionRenderer` をセットします。

app/Config/core.php

[code]

        Configure::write('Exception', array(
            'handler' => 'ErrorHandler::handleException',
            'renderer' => 'AppExceptionRenderer', // <-- ここを書き換え
            'log' => true
        ));
    
[/code]

参考:  
Exception.renderer を使って独自のレンダラを使用し、アプリケーション例外をハンドリングする  
<https://book.cakephp.org/2.0/ja/development/exceptions.html#exception-
renderer>

