Buenas prácticas en PHP – Excepciones

Posted by daniel on diciembre 07, 2011
PHP

Situación:

PHP soporta manejo de excepciones, esto es bueno, pero peligroso.

Las excepciones son una gran herramienta para manejar situaciones excepcionales en la ejecución del código.

A menudo se usan mal las excepciones, y tendemos a abusar de ellas.

Las excepciones causan un poco de pérdida de memoria cuando son ejecutadas en algunas situaciones. Como por ejemplo:

<?php
function check_input($input) {
if($input !== "Hola") {
throw new Exception("Usuario erroneo");
}
}
?>

Cuando podríamos hacer algo mucho más simple como:

<?php
function check_input($input) {
if($input !== "Hola") {
return false;
} else {
return true;
}
?>

Solución: Usar bien las excepciones

<?php
function check_server_connection() {
if(server_connection_timeout()) {
throw new Exception('Tiempo fuera');
}
}
?>

Manejo de errores en un bloque de procesos

<?php
try {
$person->setName('John Doe');
$person->setAddress('Something St. 12');
$person->setbirthDate('10-10-1900');
$person->store();
} catch (Exception e) {
throw new DataPopulationException('Unable to fill data for person ' . $person->getId(), e);
}
?>

Las excepciones pierden algo de memoria cuando se les lanza continuamente (por ejemplo en un bucle de proceso):

<?php
foreach($i = 1000000; $i > 0; $i--) {
throw new Exceptions( "Algun mensaje" );
}
?>

La memoria usada no es liberada por completo cada vez.

1 comentario to Buenas prácticas en PHP – Excepciones

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>