Ver Mensaje Individual
Antiguo 12-feb-2008, 23:12   #6 (permalink)
GatorV
$this->role('moderador');
GatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradableGatorV es realmente agradable
 
Avatar de GatorV
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ags/
Mensajes: 16.068
Re: Duda POO en PHP con cierta herencia

1.- La clase ViewException esta definida ahi para ahorrar codigo, pero puede estar definida en otro fichero sin ningun problema aunque no tenga miembros ni nada (de hecho es mas recomendable que este en su fichero propio).

2.- La clase View ve a ViewException porque esta definida aunque estuviera asi:
Código PHP:
<?php
include( 'View/Exception.php' );
class 
View {

}
Como te comento no importa donde este la clase con que tu la incluyas la puedes lanzar.

Para usar el comando throw tu debes de tener una clase que herede de Exception, no puedes lanzar clases que no hereden a Exception (esto es por diseño).

El comando throw lanza una clase por decir lanzar una excepcion nueva:
Código PHP:
throw new Exception"algo paso mal" ); 
y la cachas en un bloque catch, pero que pasa como te decia en un ejemplo mas grande donde solo deseas cachar errores de SQL:
Código PHP:
function algo() {
     try {
            
// muchas cosas
     
} catch( SQLException $se ) {
           
// logueamos o rollback o algo
     
} catch( Exception $e ) { // bloque generico para todas las excepciones
          
Logger::log$e->getMessage() );
          throw 
$e// Aqui relanzamos la excepcion para que un bloque mayor la controle
     
}
}


try {
      
algo();
} catch( 
Exception $e ) { // Este bloque no se va a ejecutar para excepciones de SQL, ya que esas las "cachamos" dentro de nuestra funcion y nunca van a llegar aca...
      
echo $e->getMessage();

Como puedes ver, lanze una excepcion ya creada dentro del bloque catch para atraparla mas arriba en mi codigo, para eso sirve el comando throw.

Saludos.
__________________
Blog Web
GatorV está desconectado   Responder Citando