Ver Mensaje Individual
  #1 (permalink)  
Antiguo 24/06/2012, 14:56
xdunkelheitx
 
Fecha de Ingreso: enero-2009
Mensajes: 53
Antigüedad: 15 años, 3 meses
Puntos: 1
Excepcion personalizada

Buenas tengo problemas con realizar un extends de una excepcion

tengo 3 carpetas:

-BD
-Entidades
-Negocio

en Entidades cree sdcE.php conteniendo la clase heredada excepcion :

Código PHP:
class SdcE extends Exception{
        
    protected 
$categoria;
    protected 
$mensajeAplicativo;
    protected 
$mensajeUsuario;
    
    public function 
__construct($categoria,$mensajeAplicativo,$mensajeUsuario) {

        
$this->categoria $categoria;
        
$this->mensajeAplicativo $mensajeAplicativo;
        
$this->mensajeUsuario $mensajeUsuario;
        
        
parent::__construct($categoria$mensajeAplicativo,$mensajeUsuario); 
    }
    
    public function 
getCategoria() {
        return 
$this->categoria;
    }
    public function 
getMensajeAplicativo() {
        return 
$this->mensajeAplicativo;
    }
    public function 
getMensajeUsuario() {
        return 
$this->mensajeUsuario;
    }

En la carpeta BD cree conexion.php y consultas_SQL que contiene las consultas con sus respectivos throws :

conexion.php

Código PHP:
include('../Entidad/sdcE.php');

    class 
MySQL{

          private 
$conexion
          private 
$total_consultas;

          public function 
__construct()  
        {  
           
$this->conexion mysql_connect(config::getBBDDServer(),config::getBBDDUser(),config::getBBDDPwd());
                
              if(!
$this->conexion){
                  throw new 
SdcE (0,'Error en la conexión',mysql_error($this->conexion));
              }  
              
              if(!
mysql_select_db(config::getBBDDName(),$this->conexion)){
                  throw new 
SdcE (1,'Error al seleccionar la BD',mysql_error($this->conexion));
              }
        }  
        
        public function 
__destruct()  
        {  
            
mysql_close($this->conexion);  
        }  
          

          public function 
consulta($consulta){ 
            
$this->total_consultas++; 
            
$resultado mysql_query($consulta,$this->conexion);
            if(!
$resultado){ 
                throw new 
SdcE(2,'Error en Sentencia BD',mysql_error($this->conexion));
            }else{
                return 
$resultado;    
            }
          }

      public function 
fetch_array($consulta){
       return 
mysql_fetch_array($consulta);
      }
    
      public function 
num_rows($consulta){
       return 
mysql_num_rows($consulta);
      }
    
      public function 
getTotalConsultas(){
       return 
$this->total_consultas
      }
      
      public function 
getConexion(){
       return 
$this->conexion
      }

consultas_SQL.php

Código PHP:
include_once('conexionBD.php');


    class 
SQLSisdeclas{
        
        private 
$db;
        private 
$conexion;
        
        public function 
SQLSisdeclas(){
            
            
$this->db = new MySQL();
            
$this->conexion $this->db->getConexion();    
        }
        
        public function 
obtenerUltimoPeriodo(){
                
            try{
                
                
$sql  "SELECT max(pa.id) ";
                
$sql .= "FROM periodoacademico pa ";
       
                
$mysqlQuery mysql_fetch_array($this->db->consulta($sql));
                return 
$mysqlQuery;
                
            }catch(
exception $e){
                throw 
$e;
            }catch(
SdcE $ex){
                throw 
$ex;
            }

        }
        
    } 
y en negocio la operacion


Código PHP:
class Operaciones{
   public 
$dp;
   public 
$BD;
   
    function 
obtenerCursosMatriculados($id=NULL){
            
        try{
             
            
$BD = new SQLSisdeclas();
            
$tabla $BD->obtenerUltimoPeriodo();
          
                          
            return 
$id;
            
        }catch(
exception $e){
            return 
$e->getMessage();
        }catch(
SdcE $ex){
            return 
$ex->getCategoria();
        }
    }
    


Si en vez de SdcE en los throw uso Exception, me devuelve el mensaje de excepcion normal. (es decir si funciona con Exception).

Pero asi con una excepcion extendida no me funciona. Que puedo estar haciendo mal?.

gracias de antemano.