Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: cyberserver en 24 Diciembre 2010, 01:07 am



Título: Ingenieria de Software en le Manejo de Errores
Publicado por: cyberserver en 24 Diciembre 2010, 01:07 am
Hola amigos.

Quisiera abrir una pregunta acerca del manejor de errores teniendo ingenieria de software.!

La pregunta es quiza muy tonta pero me gustaria saber cual es la mejor manera para Avisar al Usuario de un error sin comprometer el Resultado Devuelto por el metodo o agregando mensajes ENORMES que quiten una bonita interface Y/o estetica de la aplicacion.

Por ejemplo en el siguiente metodo de Java, como podria avisar de un Error sin tener que colocar un Mensaje enorme que diga del error.
Código:
public int Suma(int a,int b){
     try{
        return a+b;
     }catch(Exception Error){
       JOptionPane.showMessengerDialog(null,"El error es " + Error);
       return null;
     }
}

Pensando en Java:
Esto del manejo de errores y la mejor forma para tratarlos no lo hago solo por estetica.! si no por buen funcionamiento de la aplicacion. ya que si queremos exportar una Clase a nivel web (JSP) no es funcional JOptionPane. y no quiero comprometer el resultado devuelto por el metodo por mostrar un tipo de Error.

como podria avisar de un Error sin usar un Mensage?


Título: Re: Ingenieria de Software en le Manejo de Errores
Publicado por: leogtz en 24 Diciembre 2010, 03:48 am
Yo creo que depende del programador y de la importancia del dato. Yo no lo dejaría proceder hasta que de una respuesta buena. Por otra parte, yo recomendaría darle el mensaje en un JLabel en rojo en vez de un JOption....  >:D


Título: Re: Ingenieria de Software en le Manejo de Errores
Publicado por: 1mpuls0 en 24 Diciembre 2010, 05:58 am
Has intentado con

Código
  1. try {
  2.        ...
  3. }
  4. catch(Exception Error) {
  5.       JOptionPane.showMessengerDialog(null,Error.getMessage());
  6. }
  7.  

Además no lo estas hacienco como se deve (lo digo por tú código Java) ya que debes utilizar POO.

Por lo menos yo, intentaría manejar las Excepciones aparte.

Por ejemplo.

Código
  1. import javax.swing.JOptionPane;
  2.  
  3. public class Suma {
  4.  
  5. private int resultado;
  6.  
  7. public static void main(String args[]) {
  8. new Suma();
  9. }
  10.  
  11. public Suma() {
  12. String a;
  13. do{
  14. a = JOptionPane.showInputDialog(null, "Escribe un numero entero", "Entrada", 1);
  15. }while(!esNumero(a));
  16.  
  17. String b;
  18. do {
  19. b = JOptionPane.showInputDialog(null, "Escribe otro numero entero", "Entrada", 1);
  20. }while(!esNumero(b));
  21.  
  22. int numeroA = Integer.parseInt(a);
  23. int numeroB = Integer.parseInt(b);
  24.  
  25. int resultadoSuma = Sumar(numeroA, numeroB);
  26.  
  27. JOptionPane.showMessageDialog(null, "La suma de " +a +" y " +b +" es " + resultadoSuma, "Resultado", 1);
  28.  
  29. }
  30.  
  31. private boolean esNumero(String str) {
  32. try {
  33. Integer.parseInt(str);
  34. return true;
  35. }
  36. catch(Exception e) {
  37. JOptionPane.showMessageDialog(null, e.getMessage(), "Error", 0);
  38. return false;
  39. }
  40. }
  41.  
  42.    private int Sumar(int numA, int numB) {
  43.     return numA+numB;
  44.    }
  45. }
  46.  

Estoy utiizando variables de más para explicarme un poco mejor.

La primera idea de Leo Gutiérrez no es mala pero tal vez si el usuario mira que la aplicación no hace nada, llegará a pensar que simplemente está bloqueada o algo por el estilo.
La segunda me parece buena  ;)

Un saludo.

EDITO.
Entonces por lo que entiendo intentas generalizar las excepciones?  :-\ si sabes que el usuario al intentar hacer una suma por que mostrar todo el String que te manda, si puedes hacer por ejemplo.

Código
  1. try {
  2. ...
  3. }
  4. catch(Exception e) {
  5. JOptionPane.showMessageDialog(null, "Solo se aceptan valores numericos", "Error", 0);
  6. }
  7.