Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Java e SQL:retornar nulo ou lançar exceção?


eu evitaria o seguinte
   sql.append("SELECT * FROM ").append("dogs_table");
   sql.append(" WHERE ").append(colName).append("='");
                        sql.append(colValue).append("'");

e, em vez disso, use um PreparedStatement com seus métodos de configuração de parâmetros associados (setString() ) etc. Isso evitará problemas com valores para colValue tendo aspas e ataques de injeção de SQL (ou mais geralmente, colValue formando alguma sintaxe SQL).

Eu nunca retornar um null se a coleção estava meramente vazia. Isso parece muito contra-intuitivo e completamente inesperado do ponto de vista do cliente.

Eu não recomendaria retornar um null em condições de erro, pois seu cliente precisa verificar explicitamente isso (e provavelmente esquecerá). Eu retornaria uma coleção vazia, se necessário (isso pode ser análogo ao seu comentário sobre um objeto nulo) ou, mais provavelmente, lançaria uma exceção (dependendo das circunstâncias e da gravidade). A exceção é útil porque carrega algumas informações relacionadas ao erro encontrado. Null não diz nada.

O que você deve fazer se encontrar um problema ao construir um Dog objeto? Acho que isso depende de quão robusto e resiliente você deseja que seu aplicativo seja. É um problema retornar um subconjunto de Dog s, ou seria completamente catastrófico e você precisa relatar isso? Esse é um requisito do aplicativo (eu tive que atender a qualquer cenário no passado - melhor esforço ou tudo ou nada ).

Algumas observações. Eu usaria HashMap em vez do antigo Hashtable (sincronizado para todos os acessos e, mais importante, não uma Collection adequada - se você tiver uma Collection você pode passá-lo para qualquer outro método esperando qualquer Collection ) e StringBuilder sobre StringBuffer por motivos semelhantes. Não é um grande problema, mas vale a pena conhecer.