facebook twitter hatena line email

Php/exceptionメモ

提供: 初心者エンジニアの簡易メモ
移動: 案内検索

例外に使うexceptionの継承での使い方

try {
  throw new MyException("Err:001");
} catch (MyException $e) {
  print $e->getMessage();
} 
class MyException extends Exception
{
  public function MyException($message, $code = 0)
  {
    parent::__construct($message, $code);
    // print $this->message;// Err:001
    // print $this->code;  // 0
    // print $this->file;  // /home/test/exception.php
    // print $this->line;  // 4
    
    print nl2br(print_r(get_object_vars($this),1));
  }
}

こんな感じで使えるといいかも。

<?php
require_once 'Zend/Exception.php';
/**
 * AppException
 * 
 * @ex
 * throw new AppException(AppException::ERR_SAMPLE);
 */
class AppException extends Zend_Exception
{
    // エラーコード定数
    
    // 全体
    const ERR_DB_CONNECT                            = 5001;     // DBコネクションエラー
    
    /**
     * constructor
     */
    public function __construct($errCode, $addMessage = )
    {
        switch ($errCode)
        {
            case self::ERR_DB_CONNECT:
                $errMessage = 'DBコネクションエラー';
                break;
            /**
             * 予期せぬエラー
             */
            default:
                $errMessage = 'システムエラー';
                break;
        }
        // 追加メッセージがあるとき
        if ($addMessage) {
            $errMessage .= $addMessage;
        }
        parent::__construct($errMessage, $errCode);
    }
    /**
     * 表示用メッセージ作成
     */
    static public function makeMessage($errMessage, $errCode)
    {
        return 'Error:' . $errCode . ' ' . $errMessage;
    }
}