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

Throws en metodos

Estas en el tema de Throws en metodos en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola amigos. Estoy usando php 5 e intentando utilizar mejor las excepciones, pero no encuentro la manera de hacer lo siguiente. En caso de que ...
  #1 (permalink)  
Antiguo 08/11/2007, 20:18
 
Fecha de Ingreso: noviembre-2003
Ubicación: Paraguay
Mensajes: 382
Antigüedad: 20 años, 5 meses
Puntos: 4
Mensaje Throws en metodos

Hola amigos.

Estoy usando php 5 e intentando utilizar mejor las excepciones, pero no encuentro la manera de hacer lo siguiente.

En caso de que el metodo que el método que estoy usando no deba manejar la excepcion, existe en php 5 la opción de function nombreMetodo() throws Exception{}?

Para que le método que llame a este método maneje la excepcion.
  #2 (permalink)  
Antiguo 08/11/2007, 20:59
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Throws en metodos

Podrias explicar mas tu problema? no eres muy claro en lo que quieres realizar, ya que si quieres lanzar un metodo solo tienes que usar throw new ClassOfException(), asi las excepciones suben en forma de burbuja por los metodos hasta que lleguen a un catch.

Saludos.
  #3 (permalink)  
Antiguo 09/11/2007, 07:00
 
Fecha de Ingreso: noviembre-2003
Ubicación: Paraguay
Mensajes: 382
Antigüedad: 20 años, 5 meses
Puntos: 4
Mensaje Re: Throws en metodos

OK. Voy de vuelta

Tengo tres clases

Clase1, Clase2 y Clase3

La Clase1 se conecta por ejemplo a la base de datos y si no logra la conexión hago que tire una excepción. Uso ese método "conectar()" que tira la excepcion desde un método de la Clase2 pero no quiero manejar la excepción a este nivel sino que quiero usarlo desde el método de la Clase3 o desde el programa mismo de mi página index por ejemplo. Quiero manejar mi excepción directamente aquí para mostrar un mensaje.

Trate de hacerlo como en JAVA así pero los que está en rojo me da error. Quizá no lo estoy escribiendo bien.

class Clase2
{
function metodoQueLlamaAConectar() throws Exception
{
//-- lo que sea
}

}

Entonces en la Clase3

class Class3
{
function hacerAlgo()
{
$c2 = new Clase2();
try
{
$c2->metodoQueLlamaAConectar();
}
catch(Exception $e)
{
echo $e.getMessage();
}
}
}


Se entiende?
  #4 (permalink)  
Antiguo 09/11/2007, 08:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Throws en metodos

Como te comento las excepciones en PHP suben como burbuja, si tu explicitamente no las "cachas" siguen subiendo por los metodos es decir prueba este codigo:
Código PHP:
class Clase1 {
       public function 
conecta() {
              throw new 
Exception"lanzado desde clase1" );
       }
}

class 
Class2 {
       public function 
trataConectar() {
              
$obj = new Class1();
              
$obj->conecta();
       }
}

class 
Clase3 {
       public function 
algo() {
              
$cl = new Class2();
              try {
                   
$cl->trataConectar();
              } catch( 
Exception $e ) {
                    echo 
$e->getMessage();
              }
       }


}

$c = new Class3();
$c->algo(); 
Saludos.
  #5 (permalink)  
Antiguo 09/11/2007, 09:05
 
Fecha de Ingreso: noviembre-2003
Ubicación: Paraguay
Mensajes: 382
Antigüedad: 20 años, 5 meses
Puntos: 4
Re: Throws en metodos

Ok.

Es decir que si no haces un try...catch explícito es como si hicieras un throws en el metodo. Excelente.

Por otro lado. entonces no sería como Java que te avisa que existe una exception que tienes que atrapar o dejarla pasar. Pregunto porque en este caso, si usas un framework php deberías de conocer muy bien las librerías que utilizas para poder usar sus excepciones verdad? Ya que el IDE no te va a avisar.
  #6 (permalink)  
Antiguo 09/11/2007, 10:46
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Throws en metodos

Así es, si estas utilizando un Framework es muy necesario que este bien documentado para que sepas que puede lanzar una excepción y dependiendo del IDE pueden leer la firma de la clase y mostrarte documentación en pantalla (por ejemplo el Zend Development Enviroment y el Eclipse lo hacen.

Saludos.
  #7 (permalink)  
Antiguo 09/11/2007, 11:45
 
Fecha de Ingreso: noviembre-2003
Ubicación: Paraguay
Mensajes: 382
Antigüedad: 20 años, 5 meses
Puntos: 4
Re: Throws en metodos

Zend Development Enviroment? ese es el Zend Studio? me suena raro el nombre. Como hago para ver la firma de la clase?
  #8 (permalink)  
Antiguo 09/11/2007, 12:15
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Throws en metodos

Asi es, el Zend Studio, si tu clase esta documentada automaticamente al escribir el metodo de la funcion te debe de mostrar el nombre.

Saludos.
  #9 (permalink)  
Antiguo 09/11/2007, 12:23
 
Fecha de Ingreso: noviembre-2003
Ubicación: Paraguay
Mensajes: 382
Antigüedad: 20 años, 5 meses
Puntos: 4
Re: Throws en metodos

Ah ok. Ya lo identifique. Perfecto. Te agradezco mucho la ayuda y el tiempo man.
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 22:07.