Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Excepción con excepción propia

Estas en el tema de Excepción con excepción propia en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola! Bueno, ando haciendo un ejercicio de excepciones, tengo que dictaminar mi propia extensión de la Excepción principal y hacer en ella un switch. Pero ...
  #1 (permalink)  
Antiguo 12/11/2010, 15:40
Avatar de Xirant  
Fecha de Ingreso: noviembre-2010
Mensajes: 21
Antigüedad: 14 años
Puntos: 0
Excepción con excepción propia

Hola!

Bueno, ando haciendo un ejercicio de excepciones, tengo que dictaminar mi propia extensión de la Excepción principal y hacer en ella un switch. Pero no sé porqué (estoy segura de que es una tontería) no me coge la función getCode() correctamente. Seguro que me merezco un buen capón por ello :oS

Os pongo el código =>

Código PHP:
 <?php


        
// llamamos a la nueva excepcion que viene del padre Excepcion principal

        
class MiExcepcion extends Exception {
         

           public function  
__construct($message$code) {

               
// lo de arriba es el constructor de miExcepcion
               // y lo de abajo el constructor padre
                
parent::__construct($message$code);

            }

           function  
__toString() {

        switch ( 
getCode ()) { 


               case 
1:
                return 
"<table border='1' width='100%'>" "<tr>" 
                
"<td><strong>Excepcion " $this->getCode() . "</strong> : <br />" 
                
$this->getMessage() . " en la linea " $this->getLine() . " del fichero " 
                
$this->getFile() . 
                
"</td></tr></table>"  
                      
;
               

               case 
2:
                   return 
"<table border='1' width='100%'>" "<tr>" .
                
"<td><strong>Excepcion " $this->getCode() . "</strong> : <br />" .
                
$this->getMessage() . " en la linea " $this->getLine() . " del fichero " .
                
$this->getFile() .
                
"</td></tr></table>"
                      
;
               

               default:
                   return 
"<table border='1' width='100%'>" "<tr>" .
                
"<td><strong>Excepcion " $this->getCode() . "</strong> : <br />" .
                
$this->getMessage() . " en la linea " $this->getLine() . " del fichero " .
                
$this->getFile() .
                
"</td></tr></table>"
                      
;
               }
            }
       

        }

$email "someoneexample.com";
$email2 "[email protected]";
$patron "/^[a-z0-9]+([\.]?[a-z0-9_-]+)*@[a-z0-9]+([\.-]+[a-z0-9]+)*\.[a-z]{2,}$/";

try

{

    try

    {

        if(!
ereg($patron$email))

        throw new 
Exception($email1);

        if(
strpos($email"example") !== FALSE)

        throw new 
Exception($email22);

        echo 
"He llegado al final";

    }

catch (
Exception $e)

{
    
// se relanza la excepción

    
throw new customException($email,$e->getCode());

    
}

}

 catch (
customException $e)

 {

     echo 
$e->getCode();

 }



?>
  #2 (permalink)  
Antiguo 12/11/2010, 15:47
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Excepción con excepción propia

Usa $this->getCode() para eso.

Saludos.
  #3 (permalink)  
Antiguo 12/11/2010, 16:35
Avatar de Xirant  
Fecha de Ingreso: noviembre-2010
Mensajes: 21
Antigüedad: 14 años
Puntos: 0
Respuesta: Excepción con excepción propia

Igual piensas que soy un rato tonta, pero llevo un par de horas intentándolo de 100 maneras diferentes. Efectivamente me da el error en getCode() una y otra vez, en esta línea =>


throw new customException($email,$e->getCode());


He probadoo a poner el $this->getCode() en varios sitios, dentro y fuera de la subclase, con y sin el constructor padre, pero no termino de 1) encajar donde tengo que ponerlo y 2) porque lo tengo que poner ahí.

Gracias por la ayuda de antes (por supuesto) :) No me rindo.
  #4 (permalink)  
Antiguo 13/11/2010, 00:19
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Excepción con excepción propia

Me refiero en este punto: switch ( getCode ()) { ahora si ya estas extendiendo la clase a tu propia excepción es recomendable que uses esa excepción para lanzarla, ya que cachar Exception y relanzar tu excepción, estas siendo redundante y no va a funcionar como quieres.

Saludos.
  #5 (permalink)  
Antiguo 13/11/2010, 04:27
Avatar de Xirant  
Fecha de Ingreso: noviembre-2010
Mensajes: 21
Antigüedad: 14 años
Puntos: 0
Respuesta: Excepción con excepción propia

Solucionado!!

Muchas gracias (de nuevo :o)

Al final tenía varias cosillas, al margen de la redundancia, la primera es que llamaba a customException cuando mi nueva clase no era esa... desastre total :S

Muchas gracias, GatorV

Etiquetas: propia
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:38.