Tratar exceção RuntimeException

5 respostas
matheusssilva

Não sei se entendi errado o que li em outro forum mas pelo que entendi, a galera falava que se em sua aplicação vc estiver tratando RuntimeException é pq seu códico não foi bem planejado e tem pouca ou nenhuma modelagem.

Isso procede?
Realmente é deselegante tratar RuntimeException?
Bem se for, o que eu poderia fazer nesse caso

public class ManutTables {

    public static void sizeColumn(JTable Tabela, Object[][] Objeto,
            TableModelScript modelo){


            for(int co = 1; co <= modelo.getColumnCount(); co++){
                String titulocol = modelo.getColumnName(co -1);
                String campo = "";
                int sizecampo = 0;

                for(int li = 1; li <= Objeto.length; li++){
                    try {
                        if(campo.length() < Objeto[li-1][co-1].toString().length())
                            campo = Objeto[li-1][co-1].toString();
                    }
                    catch (RuntimeException nullpointer){          }
                    
                    if(titulocol.length() <= campo.length())
                        sizecampo = getPixelString(Tabela, campo);
                    else sizecampo = getPixelString(Tabela, titulocol);
                }
                Tabela.getColumnModel().getColumn(co -1).setPreferredWidth(sizecampo+4);
            }
    }

    private static int getPixelString(JTable Table, String string){
        FontMetrics metrics = Table.getFontMetrics(Table.getFont());
        int metri = metrics.stringWidth(string);
        return metri;
    }

}

O array Objeto pode conter elementos null. Quando o método getString se depera com um elemento null, ele diapara a excessão RuntimeException, se esse tipo de excessão não deveria contecer o que eu poderia fazer para evita-la?

5 Respostas

T

Que feio mesmo! Se você sabe que um determinado elemento é null, é melhor procurar por ele. O correto seria, no seu caso em particular:

Object obj = Objeto [li-1][co-1];
    if (obj != null) {
        String str = obj.toString();
        if (campo.length() &lt; str.length()) 
            campo = str;
    }
  • Mais rápido:
    a) você não acessa o mesmo elemento 2 vezes
    b) você não chama toString 2 vezes;
    c) você não cria uma exceção nunca
  • Mais fácil de manter.

Outra coisa, não ponha nomes de variáveis ou parâmetros em maiúsculas. Na hora de mexer no seu código me confundi todo.

emmanuelrock

Olá…

É só você fazer uma validação no array antes de usá-lo, se encontrar alguma posição contendo referência nula faça novamente a povoação do array.

Abraço…

matheusssilva

Nesse array contém todos os elementos do meu banco de dados que estão exibidos na minha JTable, eu não tenho como saber se um elemento vai ou não ser null pois isso é retornado pelo banco quando se deixa de preencer algum campo no cadastro. então o programa tem que quer conseguiri trabalhar com os nulos ou então subtituilos por strings vazias. mas não to tendo ideia de como fazer isso.
vou tentar implementar o thingol fez.

emmanuelrock

No banco de dados tem opção de valor default, dai é só colocar ‘nulo’ como default.

matheusssilva

Resolvido!

Prontinho, apenas implementei o teste que o thingol fez, realmente bastava testar para saber se o elemento era null antes de fazer as operações com ele.
Deu um branco na hora. mas é isso ai.

Valew gente.

Criado 29 de julho de 2009
Ultima resposta 30 de jul. de 2009
Respostas 5
Participantes 3