Foros del Web » Programando para Internet » PHP »

Problema con try catch

Estas en el tema de Problema con try catch en el foro de PHP en Foros del Web. hola estoy probando try catch para el manejo de errores como dice su concepto pero siento que no funciona.. tal vez este haciendo algo mal ...
  #1 (permalink)  
Antiguo 21/11/2010, 16:48
 
Fecha de Ingreso: septiembre-2009
Mensajes: 54
Antigüedad: 14 años, 7 meses
Puntos: 0
Pregunta Problema con try catch

hola estoy probando try catch para el manejo de errores como dice su concepto pero siento que no funciona.. tal vez este haciendo algo mal corrijanme porfavor

hice este codigo de ejemplo y espere que el resultado solo sea "Error, esa variable no existe" pero no es asi, sino que me devuelve "Fatal error: Call to undefined function funcion_inexistente() in C:\wamp\www\test\test.php on line 11"


Código PHP:
Ver original
  1. try{
  2.     if(!funcion_inexistente())
  3.         throw new Exception('Error, esa variable no existe');
  4.     echo funcion_inexistente();
  5. }
  6. catch(Exception $e){
  7.     echo $e->getMessage();
  8. }

entonces donde esta el manejo de error de try catch o que hice mal??
  #2 (permalink)  
Antiguo 21/11/2010, 17:52
 
Fecha de Ingreso: julio-2009
Mensajes: 72
Antigüedad: 14 años, 8 meses
Puntos: 16
Respuesta: Problema con try catch

no se que intentas hacer pero a ver si esto te ayuda

Código PHP:
function llamarFuncion($nombreFuncion){

       if(!
function_exists($nombreFuncion)){

           throw new 
Exception('Error, esa funcion no existe');
       } else {
           return 
$nombreFuncion();
       }

}

try{
      
llamarFuncion('unafuncion');
}catch(
Exception $e){
       echo 
$e->getMessage();

  #3 (permalink)  
Antiguo 21/11/2010, 18:30
 
Fecha de Ingreso: septiembre-2009
Mensajes: 54
Antigüedad: 14 años, 7 meses
Puntos: 0
Pregunta Respuesta: Problema con try catch

Cita:
Iniciado por pochos Ver Mensaje
no se que intentas hacer pero a ver si esto te ayuda

Código PHP:
function llamarFuncion($nombreFuncion){

       if(!
function_exists($nombreFuncion)){

           throw new 
Exception('Error, esa funcion no existe');
       } else {
           return 
$nombreFuncion();
       }

}

try{
      
llamarFuncion('unafuncion');
}catch(
Exception $e){
       echo 
$e->getMessage();

Gracias por responder, tu codigo si funciona usandolo de esa forma, pero yo creia que TRY detectaba cualquier error dentro de sus llaves y los mostraba en CATCH con un mensaje personalizado pero veo que no es asi (por que en mi codigo no funciona), y como dije.. de la forma que lo hiciste funciona pero seria mejor usar IF ELSE para detectar dicho error, entonces cual es la diferencia entre TRY CATCH y IF ELSE ?? por que veo que ambos funcionan igual solo que if else funciona con menos codigo
  #4 (permalink)  
Antiguo 21/11/2010, 18:47
 
Fecha de Ingreso: julio-2009
Mensajes: 72
Antigüedad: 14 años, 8 meses
Puntos: 16
Respuesta: Problema con try catch

Una excepción puede ser lanzada (thrown), y atrapada ("catched") dentro de PHP. Lo que tu quieres atrapar son errores no excepciones. Pudes hacer algo asi pero con ayuda de la funcion set_error_handler . En este link puedes encontrar esta idea http://sentidoweb.com/2008/04/29/tra...nes-en-php.php
  #5 (permalink)  
Antiguo 21/11/2010, 18:51
Avatar de carlos_belisario
Colaborador
 
Fecha de Ingreso: abril-2010
Ubicación: Venezuela Maracay Aragua
Mensajes: 3.156
Antigüedad: 14 años
Puntos: 461
Respuesta: Problema con try catch

pues lee el manual, ahi esta clarita la diferencia exepcionesy ve if-else
de todas maneras resumiendote un poco el if/else es que ejecute si es verdadera una condicion de lo contrario entra al else, en cambio el try/catch, siempre intenta el try y si algo en este falla se ejecuta el catch que normalmente te muestra la execion de todas maneras en el manual te lo explica mejor saludos
__________________
aprende d tus errores e incrementa tu conocimientos
it's not a bug, it's an undocumented feature By @David
php the right way

Etiquetas: catch
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 15:40.