Tratamento de exceções?

8 respostas
louds

Eu venho tendo essa dúvida a meses e ate hoje não consegui achar uma boa solução.

Meu problema: tentar convencer alguém de duas coisas:
-Exceções não existem para te atrapalhar ou te punir.
-Exceções devem ser tratadas e não ignoradas.

Porém eu venho me mostranto incapaz de fazer isso.

Alguêm aqui já obteve sucesso com algo desse tipo? Conhece alguma dica ou artigo de como eu faço para sair desse tunel sem luz evitando ser grosseiro?

8 Respostas

Rafael_Steil

Se o individuo nao esta disposto a querer entender, entao ja comecou mal… uma das piores coisas que tem eh vc querer explicar algo para alguem que de cara ja nao esta disposto a aceitar os argumentos…

Argumentos como “ignorar uma exception torna o teu programa dificil de debugar em caso de erro; pode ocasionar funcionamento inesperado, pois o erro nao sera reportato/tratato; tratar uma exception te da a chance de mostrar uma msg de erro amigavel ao usuario, tentar uma outra solucao dinamicamente, logar o erro, avisar o administrador; exceptions existem para ajudar a previdir erros comuns ( lance das checked exceptions )” e coisas assim me parecem argumentos mto validos, e vc ja deve ter usado eles, pois sao os obvios…

Talvez se vc mostrasse com programinhas de exemplo as diferencas entre um caso e outro… assim o cara veria com os proprios olhos os beneficios…
Mas de qualquer maneira, se a pessoa nao esta disposta a entender, fica muito complicado mesmo…

Rafael

D

http://www.di.ufpe.br/~java/jai/aula7/semexcecoes.html
Compare com
http://www.di.ufpe.br/~java/jai/aula7/comexcecoes.html
Conclusão 1: Com exceções você mantém a lógica e clareza do código.

Sobre ignorar a excessão, o Rafael já falou. Se ela existe, é porque tem sua utilidade. Ignorá-la pode mascarar bugs ou simplemente é um recurso que se perde e que poderia tornar sua aplicação mais robusta.

Rapidamente, foi o que veio.

D

Acabei de ver que há listagem de vantagens aqui:
http://www.di.ufpe.br/~java/jai/aula7/vantagens.html

cv1

Uma solucao pratica seria olhar o codigo com todos os warnings do Eclipse 3.0 M4 ligadas - um dos warnings que ele manda eh sobre blocos de codigo vazios (os famosos catch(Exception e) { }).

Outra ideia eh fazer com que TODAS as classes no seu sistema implementem uma interface, e que esta interface mande jogar as excecoes. Assim, quando o cara estiver programando, e mandar implementar a interface na IDE, ela nao vai chiar pela falta de try/catch, pq o throws ja esta especificado. Alem de ser uma boa pratica de programacao escrever tudo em cima de interfaces, de quebra vc ainda controla melhor a estupidez do pessoal :wink:

cv1

Outra ideia simples: procure todos os usos de printStackTrace() no codigo, e com certeza vc vai achar um MONTE de excecao mal-tratada. :wink:

bush

Não briguem comigo, mas é exceções, ô meu !

[]´s

cv1

Spellchecked by cv :wink:

Daniel_Quirino_Olive

Peça para estas pessoas trocarem umas idéias com a Clotilde :wink: .
Mas, falando sério, a idéia que o Carlos propôs é boa, mas é paleativa. Você precisa explicar que exceções existem para que se possam identificar comportamentos inesperados pela sua aplicação e que precisam ser tratados para que o usuário não sofra com aplicações instáveis e que não oferecem possibilidades de recuperação do estado anterior ao do erro. Se estas pessoas forem partidárias do “on error goto hell” para tratamento de erros, então argumente que exceções servem TAMBÉM para que se trate erros diferentes de maneiras diferentes (ahh isso também serve para aqueles que costumam usar “catch(Exception e) {…” para tratar exceções).
É isso.

Criado 18 de novembro de 2003
Ultima resposta 18 de nov. de 2003
Respostas 8
Participantes 6