Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

Excepciones

Estas en el tema de Excepciones en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Saludos, Estoy comenzando a meterme de lleno con PHP5 y estoy leyendo sobre el manejo de Excepciones con la clase Exception, sin embargo estoy haciendo ...
  #1 (permalink)  
Antiguo 14/08/2007, 13:29
 
Fecha de Ingreso: julio-2005
Mensajes: 7
Antigüedad: 18 años, 9 meses
Puntos: 0
Pregunta Excepciones

Saludos,

Estoy comenzando a meterme de lleno con PHP5 y estoy leyendo sobre el manejo de Excepciones con la clase Exception, sin embargo estoy haciendo ejemplos sencillos como el que mostraré a continuación y siempre me muestra el error propio que devuelve PHP mas no el mío que estoy pasando mediante el código, quisiera saber que estoy haciendo mal?

Código PHP:
<?php

    
class calc extends Exception{
    
        protected 
$num1;
        protected 
$num2;        
    
        static function 
division($resultado){
        
            
$resultado $num1 $num2;
            
            if(
$resultado 0){
                throw new 
Exception('ERROR: Division entre 0.');
            } else {
                return 
$resultado;
            }
        }
    }
    
    try{
        
calc::division(2,0);
    }catch(
Exception $ex){
        echo 
$ex->getMessage();
    }

?>
En este ejemplo trato de dividir entre 0, pero cuando ejecuto el código me muestra el error: Warning: Division by zero in C:\wamp\www\curso\errores\calc.php on line 10 cuando creo que debería mostrar el mensaje personalizado ERROR: Division entre 0.

Gracias de antemano.
  #2 (permalink)  
Antiguo 14/08/2007, 14:37
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Excepciones

Lo que pasa es que tu para saber que la division es entre 0 debes de comparar si $num 2 es igual a 0 para que te lance la excepcion:
Código PHP:
<?php

    
class calc {
    
        protected 
$num1;
        protected 
$num2;        
    
        static function 
division($resultado){
            
            if(
$num2 == 0){
                throw new 
Exception('ERROR: Division entre 0.');
            }
            
            
$resultado $num1 $num2;
            return 
$resultado;
        }
    }
    
    try{
        
calc::division(2,0);
    }catch(
Exception $ex){
        echo 
$ex->getMessage();
    }

?>
Como nota adicional no es necesario heredar de la clase Exception para lanzar una excepcion.

Saludos.
  #3 (permalink)  
Antiguo 15/08/2007, 08:44
 
Fecha de Ingreso: julio-2005
Mensajes: 7
Antigüedad: 18 años, 9 meses
Puntos: 0
De acuerdo Re: Excepciones

Uhmmm buen punto.

Thanks Dude...
  #4 (permalink)  
Antiguo 14/09/2007, 12:14
Avatar de Sr.Zzz  
Fecha de Ingreso: septiembre-2007
Mensajes: 42
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Excepciones

Yo también recien estoy comenzando con php5 y POO, me gustaría que alguien me explicara paso por paso el funcionamiento de ese script ( el de GatorV ).
Saludos
  #5 (permalink)  
Antiguo 14/09/2007, 12:22
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: Excepciones

Es sencillo:
Código PHP:
<?php

    
class calc // declaramos la clase
    
        
protected $num1// declaramos una variable protegida $num1
        
protected $num2// declaramos otra variable protegida $num2  
    
       
public static function division($num1$num2){ // declaramos una funcion estatica llamada division con dos argumentos $num1, y $num2
            
            
if($num2 == 0){ // Comparamos si $num 2 es igual a 0
                
throw new Exception('ERROR: Division entre 0.'); // si lo es lanzamos una excepcion porque no se puede dividir sobre 0
            
}
            
            
$resultado $num1 $num2// realizamos la operacion y la guardamos en $resultado
            
return $resultado// regresamos el resultado
        
}
    }
    
    try{ 
// Iniciamos un bloque try
        
calc::division(2,0); // Tratamos de dividir 2 entre 0 lo cual es ilegal
    
}catch(Exception $ex){ // Atrapamos la excepcion
        
echo $ex->getMessage(); // Mostramos el mensaje de la excepcion
    
// fin del bloque try

?>
Si no sabes sobre excepciones o el bloque try/catch te recomiendo leas un buen libro de programacion orientada a objetos, ya que te explican a mas detalle el porque de las excepciones y de usar bloques.

Saludos.
  #6 (permalink)  
Antiguo 14/09/2007, 12:48
Avatar de Sr.Zzz  
Fecha de Ingreso: septiembre-2007
Mensajes: 42
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Excepciones

Muchas gracias GatorV, ahora lo entiendo.
En estos días estuve buscando un libro de php, pero todos los que encontré estaba en ingles, y lo que estaban en español eran de php3 y 4.
Antes voy a ver si hago un curso de ingles, porque es una gran barrera el no saberlo.
Saludos
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 12:18.