[Php-objetos] Consulta sobre try catch
Juan Marcos
malditared en hotmail.com
Lun Feb 16 20:55:40 ART 2009
Hola Andrés, estuve toqueteando un poco el tema y me parece que el try va en el lugar donde llamás a la función, y ésta función internamente lanza la excepción que es capturada fuera. O sea, el try va fuera del objeto (por lo menos en el caso que vos planteás) para poder capturar el error en caso de que haya uno y poder hacer algo con eso en lugar de que el error salga siempre, por ejemplo, en el codigo que mostraste:
> function
> __construct($combustible=null,$plasas=null,$cantRuedas=null,$consumoPorKm=null){
> parent::__construct($combustible);
> $this->plasas=$plasas;
> $this->cantRuedas=$cantRuedas;
> $this->consumoPorKm=$consumoPorKm;
>
> try {
> if ($combustible==null or $plasas==null or $cantRuedas==null
> or $consumoPorKm==null)
> throw new Exception("Faltan valores en los atributos de Auto.");
> }
> catch (Exception $e){
> print "Error: ".$e->getMessage()."\n";
> exit;
> }
> } // Fin de __construct
yo eliminaria el try y el catch y lo colocaría fuera, de forma que el construct quedaria algo asi:
function __construct($combustible=null,$plasas=null,$cantRuedas=null,$consumoPorKm=null){
parent::__construct($combustible);
$this->plasas=$plasas;
$this->cantRuedas=$cantRuedas;
$this->consumoPorKm=$consumoPorKm;
if ($combustible==null or $plasas==null or $cantRuedas==null or $consumoPorKm==null)
throw new Exception("Faltan valores en los atributos de Auto.");
} // Fin de __construct
y en el momento que lo llamás hacés:
$combus=new combustible('FULL',11.11);
try {
$auto=new Auto($combus,2,1,66);
}
catch (Exception $e){
print "Error: ".$e->getMessage()."\n";
exit;
}
De ésta forma si fallara, podrias tanto mostrar el error y parar el programa, o, por ejemplo, solicitarle al usuario que ingrese nuevamente el combustible indicandole el motivo. De esta forma hace mucho más dinámico manejar los mensajes de error a nuestra conveniencia.
Espero que sirva de algo, suerte!
- Juan Marcos.
Nota: creo que es plazas y no plasas (fijate el enunciado) :P
---
> Date: Mon, 16 Feb 2009 20:14:03 -0200
> From: andresmdiaz7 en gmail.com
> To: php-objetos en pato2.fi.mdp.edu.ar
> Subject: [Php-objetos] Consulta sobre try catch
>
> Hola gente, aun con el ejercicio uno, pero mas dominado por suerte.
> Estoy tratando de hacer una validacion en el constructor de mi clase
> auto, no sé como se implementa bien el try catch, pero le damos batalla
> Esta bien lo que estoy haciendo, creo que si por eso lo hice asi, jajaja.
>
> Código del constructor:
> El atributo $combustible es de tipo objeto, le paso la instancia del
> objeto combustible al constructor de auto.
> Lo que intento hacer es que al momento de crear el objeto auto, sino
> ingresa los valores, tire una excepcion.
> En el caso de que este bien, implementaria lo mismo para validar el tipo
> de datos en los setters.
>
>
> function
> __construct($combustible=null,$plasas=null,$cantRuedas=null,$consumoPorKm=null){
> parent::__construct($combustible);
> $this->plasas=$plasas;
> $this->cantRuedas=$cantRuedas;
> $this->consumoPorKm=$consumoPorKm;
>
> try {
> if ($combustible==null or $plasas==null or $cantRuedas==null
> or $consumoPorKm==null)
> throw new Exception("Faltan valores en los atributos de Auto.");
> }
> catch (Exception $e){
> print "Error: ".$e->getMessage()."\n";
> exit;
> }
> } // Fin de __construct
>
>
>
>
> La instancia queda de esta manera
> $combus=new combustible('FULL',11.11);
> $auto=new Auto($combus,2,1,66);
>
> y para pickup
>
> $combus->setTipo('GASOIL');
> $combus->setValor(9.33);
> $pickup=new Pickup($combus,4,200,98756);
>
> y funciona perfectamente.
> _______________________________________________
> Php-objetos mailing list
> Php-objetos en pato2.fi.mdp.edu.ar
> http://www3.fi.mdp.edu.ar/cgi-bin/mailman/listinfo/php-objetos
_________________________________________________________________
Descargá GRATIS el poder del nuevo Internet Explorer 7.
http://optimized.msn.com/Default.aspx?mkt=es-ar
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://www3.fi.mdp.edu.ar/cgi-bin/mailman/private/php-objetos/attachments/20090216/d3b4a685/attachment-0001.htm
Más información sobre la lista de distribución Php-objetos