BLOGスタッフブログ

インソースマーケティングデザイン

2013.02.01 システム

[CakePHP2.0]独自の例外(Exception)クラスを作成する

CakePHP2.0からエラーハンドリングの方法が結構変わりました。 今までは$this->cakeErrorメソッドを使用して、エラー処理を行っていましたが、 CakePHP2.0からは、様々な組み込み例外クラスが準備され、 それを投げることでエラー処理を行うことができます。 旧来の cakeError() によるエラーメッセージはそれぞれの例外に置き代わっています。 組み込みの例外クラスを使用するのもOKですが、今回は アプリケーション独自の例外クラス(Exception)を作成する方法を紹介します。 今回は、以下の2つのExceptionを作成してみます。 (1)アクセス権限エラーのException →アプリケーションにアクセスする際、利用権限のないユーザでアクセスがあった場合のException (2)システムエラーのException →システムで何らかのエラーが発生した場合のException 参考:例外(Exception)「http://book.cakephp.org/2.0/ja/development/exceptions.html」 ◆弊社利用CakePHPVer. 2.1.1 1.独自のExceptionクラスの作成 「app/Lib」配下にErrorディレクトリを作成し、そこにCakeExceptionを継承したAppExceptions.phpを配置します。  ※複数のExceptionを1つのファイルにまとめちゃってます。

<?php /** * 例外処理クラス */ /** * 「アクセス権限」例外処理 */ class AccAuthErrorException extends CakeException {   public function __construct($message = ”, $code = 801) {     // エラーメッセージ     $this->_messageTemplate = ‘%s にアクセスする権限がありません。’;     parent::__construct($message, $code);   } } /** * 「システム」例外処理 */ class AccSystemErrorException extends CakeException {   public function __construct($message = ”, $code = 809) {     // エラーメッセージ     $this->_messageTemplate = $message;     parent::__construct($message, $code);   } } ?>

3.bootstrapの修正

App::import(‘Lib’, ‘Error/AppExceptions’);

2.コントローラーから利用

  try {     // アクセス権限エラー発生     if ($userAuth == ‘NG’) {       throw new AccAuthErrorException(‘○○ページ’);     }      } catch (Exception $e) {     // システムエラー発生     throw new AccSystemErrorException(‘システムエラーが発生しました。管理者にお問い合わせください。’);   }

あくまで例ですが、どうでしょう? 次回は、独自のレンダラを作成して、独自のエラーページを表示する方法を紹介します。 以上です。ではまた。

インソースマーケティングデザインが書いた他の記事

見積もり・ご依頼など、
お気軽にご相談ください

本サイトはユーザーエクスペリエンスの向上などを目的に、Cookieを使用しています。
右記のバナーで「同意する」をクリックする、または本サイトを利用することにより、
お客様は弊社のCookieポリシーに同意したことになります。

同意します