CakePHPで独自例外の実装

CakePHPで独自例外を実装します。

独自例外クラス

<?php
namespace App\Exception;

use Cake\Core\Exception\Exception;

/**
 *
 */
class OriginalException extends Exception
{
    public function __construct()
    {
        parent::__construct('This is a original exception');
    }
}

独自例外クラスを呼び出すファイル記述

<?php

namespace App\Controller;

use App\Controller\AppController;
use Cake\Core\Exception\Exception;
//独自例外クラスのディレクトリ(src/Exceptionに実装した)
use App\Exception\NumberFormatException;

class SamlpleController extends AppController
{
    ...
    public function throwException(){
        try{
            throw new NumberFormatException();
        } catch (OriginalException $e){
            echo $e->getMessage();
        }
}

これで独自例外の実装ができます。 ちなみに例外のキャッチを以下のようにすると先に親のExceptionクラスでキャッチされてしまうので注意しなければいけません。

public function throwException(){
        try{
            throw new NumberFormatException();
        } catch (Exception $e){
            // こっちでキャッチされてしまう
            echo $e->getMessage();
        } catch (OriginalException $e){
            echo $e->getMessage();
        }