Foros del Web » Programando para Internet » PHP »

ayuda con excepciones

Estas en el tema de ayuda con excepciones en el foro de PHP en Foros del Web. Puedo implmentar una expcecion en un foreach?, como? Por ejemplo el array nunca llego y sale ese mensaje que dice indice indefnicido o etc, pero ...
  #1 (permalink)  
Antiguo 15/03/2011, 16:20
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años, 8 meses
Puntos: 31
ayuda con excepciones

Puedo implmentar una expcecion en un foreach?, como?

Por ejemplo el array nunca llego y sale ese mensaje que dice indice indefnicido o etc, pero en ves de que pase eso quiero imprimir un mensaje que diga FRACASO, asi lo capturo y lo muestro como mensaje, sin tener que hacer tantos IF previamente como pregunta isset($variable) etc
  #2 (permalink)  
Antiguo 15/03/2011, 16:23
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 10 meses
Puntos: 81
Respuesta: ayuda con excepciones

Intentaste poniendo un try{}catch(){} ?

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #3 (permalink)  
Antiguo 15/03/2011, 16:26
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: ayuda con excepciones

NO

una excepción solo se debe manejar a nivel de objetos, cuando intentas acceder a un índice no definido de un arreglo no es propiamente una excepción sino un error del programador...

siempre, y de verdad, siempre debemos comprobar el estado de nuestras variables antes de emplearlas... que no por el hecho de que existan las excepciones las debemos usar por flojos, pues significaría que queremos evitarnos pasos tan importantes como sencillos!!

SI

claro que puedes lanzar excepciones, pero deben corresponder también a la lógica de tu aplicación, observa este ejemplo:
Código PHP:
if ( ! isset($variable)) throw new Exception('La $variable no está definida.');
else
{
  if ( ! 
is_array($variable)) throw new Exception('La $variable no es un array.');
  else 
// etc...

como puedes notar, la mejor forma siempre será comprobar con muchos if() el estado del contexto de nuestra aplicación, y vamos que ni un try/catch te va ayudar si sigues con esa mentalidad... (:
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 15/03/2011, 17:06
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 10 meses
Puntos: 81
Respuesta: ayuda con excepciones

pateketrueke a lo q me refiero con el try/catch es justamente a usar ese tipo de excepciones...
Código PHP:
$x 1;
$foo = array("foo","bar");
check($foo,$x);
unset(
$foo);
check($foo,$x+1);
function 
check($foo,$x){
    echo 
'<hr>Ejecutando chequeo '.$x.'<br>';
    try{
        if(!isset(
$foo)) throw new Exception("La variable no tiene datos");
    }catch(
Exception $e){
        echo 
'FRACASO';
        die();
    }
    foreach(
$foo as $bar){
        echo 
$bar.'<br>';
    }

La idea de hacerlo asi es para poner "check()" a todas las variables y no hacer mucho mas en terminos de codigo.

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #5 (permalink)  
Antiguo 15/03/2011, 17:14
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años, 8 meses
Puntos: 2534
Respuesta: ayuda con excepciones

claro Marvin, en todo caso mi mensaje era principalmente para HiToGoRoShi... y estoy completamente de acuerdo contigo!!

ahora, pues... la idea es que simplemente no puedes hacer esto:
Código PHP:
error_reporting(E_ALL);
ini_set('display_errors'1);

try {
  
$foo $candy['bar'];
} catch (
Exception $e) {
  
print_r($e);
  exit;

y esperar que simplemente funcione, que por ahí no es la cosa....
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #6 (permalink)  
Antiguo 15/03/2011, 17:32
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 10 meses
Puntos: 81
Respuesta: ayuda con excepciones

Justamente, sino para eso ponemos:
Código PHP:
error_reporting(0);
//codigo
print 'FRACASO'
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #7 (permalink)  
Antiguo 15/03/2011, 18:34
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años, 8 meses
Puntos: 31
Respuesta: ayuda con excepciones

bueno siempre valido todo con if para evitar cualquier tipo de error, pero siempre tengo la duda cuando deberia usar entonces los try catch si me dedico siempre a validar/evitar que se produsca un error ?
  #8 (permalink)  
Antiguo 15/03/2011, 19:08
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 10 meses
Puntos: 81
Respuesta: ayuda con excepciones

En realidad para todo script se hace importante/necesario ir validando cada dato que vas obteniendo... en la practica esa necesidad es un problema sostenerla cuando tienes la presion de que salga todo para ayer y la cantidad de lineas de codigo que pueden no ser tuyos...

Entonces... mientras puedas y este en tus manos... trata de validarlo... en caso contrario... utiliza algun comentario que te recuerde donde lo dejaste para ir revisando cuando exista la posibilidad.

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #9 (permalink)  
Antiguo 15/03/2011, 20:18
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años, 8 meses
Puntos: 31
Respuesta: ayuda con excepciones

ok otra pregunta, porque en JAVA cuando trabajo con consultas es OBLIGATORIO implementar excepeciones, se que este es el foro de PHP pero el tema de excepcioes es general para todo no ?
  #10 (permalink)  
Antiguo 15/03/2011, 20:25
Avatar de Marvin
Colaborador
 
Fecha de Ingreso: febrero-2005
Ubicación: global $Chile->Santiago;
Mensajes: 1.991
Antigüedad: 19 años, 10 meses
Puntos: 81
Respuesta: ayuda con excepciones

Solo es un tema del lenguaje... en el caso de php, tienes la ventaja que mil cosas pueden estar mal y tu decirle explicitamente al servidor que sencillamente no te muestre errores... y te va a mostrar lo que pudo....

Basicamente se trata de buenas practicas tratar de ir resolviendo los errores que pueda tener un script, la gracia del lenguaje es que los errores los divide en 3 tipos... FATALES, ADVERTENCIAS y NOTICIAS siendo estos de falla del script, de prevencion y de notificacion por orden de aparicion.

Por lo tanto hay errores que si o si debes controlar... hay errores que te conviene controlar y hay errores que no tienes para que controlar...

Es cosa que busques ejemplos de javascript y te puedo decir que del 100% de resultados, 10% vienen con control de excepciones... si es que...

Suerte!
__________________
El que dice "Solo sé que nada sé", esta asumiendo que sabe algo.
Lea las FAQ's!
  #11 (permalink)  
Antiguo 16/03/2011, 08:16
Avatar de HiToGoRoShi  
Fecha de Ingreso: abril-2008
Mensajes: 849
Antigüedad: 16 años, 8 meses
Puntos: 31
Respuesta: ayuda con excepciones

me podrias dar ejemplos simples en las cual pueda aplicar lo que te cito mas abajo

Cita:
Por lo tanto hay errores que si o si debes controlar... hay errores que te conviene controlar y hay errores que no tienes para que controlar...

Etiquetas: excepciones
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 11:19.