2014-12-12 4 views
2

Я хочу расширить класс исключений, который возвращает пользовательское сообщение при вызове getMessage.Пользовательские исключения в CodeIgniter

class MY_Exceptions extends CI_Exceptions{ 
    function __construct(){ 
     parent::__construct(); 
    } 
    function getMessage(){ 
     $msg = parent::getMessage(); 
     return "ERROR - ".$msg; 
    } 
} 

MY_Изделия размещены в основной папке. И исключение бросания/обработки выглядит следующим образом:

try{ 
    throw new Exception('a message'); 
}catch (Exception $e) { 
     echo $e->getMessage(); 
} 

Цель состоит в том, чтобы получить сообщение «ERROR - сообщение». Но он всегда возвращает «сообщение». Когда я пытаюсь выполнить отладку, элемент управления никогда не переходит в класс MY_Exception. Есть ли что-то, что мне не хватает?

+0

Прежде ваше исключение не «обычай» его нормальное исключение с сообщением, обычай исключением является чем-то вроде 'MyCustomException («сообщение»);' я смотрел на exceptions.php (в системе/ядре CI), и кажется, что CI_Exceptions не расширяет исключение php. Прошу продолжить чтение [здесь] (http://php.net/manual/en/language.exceptions.extending.php). – Kyslik

ответ

5

Создать файл ядра/MY_Exceptions.php

<?php 
if (! defined('BASEPATH')) exit('No direct script access allowed'); 

class MY_Exceptions extends Exception { 

    public function __construct($message, $code = 0, Exception $previous = null) { 
     parent::__construct($message, $code, $previous); 
    } 

    // custom string representation of object 
    public function __toString() { 
     return __CLASS__ . ": [{$this->code}]: {$this->message}\n"; //edit this to your need 
    } 

} 

class MyCustomExtension extends MY_Exceptions {} //define your exceptions 
+2

Это помогло мне создать мои собственные Исключения в CI. Спасибо! – user3514092