Como tratar valores inesperados?

4 respostas
P

Imaginem que vocês precisem receber um valor vindo de uma fonte externa (mainframe, banco de dados…), esse valor deveria ser um número inteiro como string.

Você faz o parse e caso haja alguma exceção você seta um valor padrão, por exemplo 0.

Mas imagine que você tenha que ler dezenas de valores strings e convertê-los para inteiros. Você enche o código tries/catches?

Quais são as alternativas?

Obrigado

4 Respostas

A

Quando precisa repetir o mesmo comportamento em vários trechos do seu programa o que costuma fazer?

Crie uma função que faz essa conversão, recebendo um valor default quase não consiga…

Daí para cada dado externo que você receber, você chama a função…

P

Já faço algo assim hoje em dia, mas são vários valores padrão, quase um para um.

worldfernando

AbelBueno:
Quando precisa repetir o mesmo comportamento em vários trechos do seu programa o que costuma fazer?

Crie uma função que faz essa conversão, recebendo um valor default quase não consiga…

Daí para cada dado externo que você receber, você chama a função…

public class TrataValor {

    public Integer ValorInteiro(String Valor){
        try {
            return Integer.parseInt(Valor);
        } catch (Exception e) {
            return 0;
        }
    }

}

public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Integer i = new TrataValor().ValorInteiro("2e34");
        System.out.println("Valor:"+i);
        Integer u = new TrataValor().ValorInteiro("234");
        System.out.println("Valor:"+u);
    }

}
A

Então, sua função deve receber um valor default:

int valorA = Util.parse(recebidoA, 1);
  int valorB = Util.parse(recebidoB, 2);
    int valorC = Util.parse(recebidoC, 3);
Criado 14 de janeiro de 2011
Ultima resposta 14 de jan. de 2011
Respostas 4
Participantes 3