[Dúvida] Manuseio de Exceções

11 respostas
InsaneChess

Prezados, boa noite.
No “Java, Use a Cabeça !”, achei a seguinte informação sobre exceções e não consigo concordar, acredito ser por falta de conhecimento.

No Livro fala isso: O compilador não se importa com exceções do tipo “RunTimeException”, ou seja, ela não precisa ser declarada ou inserida em um bloco Try/catch.

Eu pensso assim:
Não é exatamente as Exceções em tempo de execução que nós temos de tratar? Não são exatamente elas que precisamos realizar o manuseio de exceção caso algo incorreto seja digitado ou aconteça longe de ser um problema de lógica?
(Exemplo: Criar uma conexão com Banco de dados, é uma RunTime exception?, por que se for eu lembro que era obrigatório realizar o tratamento de Try/Catch)

As demais exceções, conhecidas como “Exceções Verificadas” que são obrigado o uso do Try/Catch?
Quando vc tenta inserir algo em um indice que não existe na Matriz criada, é um erro de exceção verificada? Por que se for, não lembro ser obrigado de utilizar o Try/Catch sempre que crio uma Matriz…

Enfim, Alguem que tiver um tempinho sobrando pode me explicar detalhadamente isso, de um jeito que “Um burro” possa entender? Hehe

11 Respostas

Eric_Yuzo

Eu não saberia te explicar detalhadamente. Mas sei os links que podem te ajudar. :smiley:

http://sergiotaborda.wordpress.com/desenvolvimento-de-software/java/trabalhando-com-excecoes-conceitos/
http://sergiotaborda.wordpress.com/desenvolvimento-de-software/java/excecoes-boas-praticas-mas-praticas/

Sorte e bons estudos.

aluisiodsv

Exceções do tipo RunTime não podem ser tratadas. Não sabemos quando elas vão ser lançadas. Por exemplo: Uma divisão por zero. Não saberemos em nível da programação se uma variável divisora será recebida com zero para poder tratar, por isso não é necessário o tratamento. Ao contrário das outras exceções, q são previsíveis.

InsaneChess

Yuzo, obrigado pelo Link.
Após ler tudinho duas vezes eu acabei conseguindo Sanar minhas dúvidas.

aluisiodsv, obrigado igualmente.
Após seu comentário eu acabei entendendo melhor a “lógica” do por que RuntimeException não ter tratamento obrigatório.

Hehe depois que se entende, as coisas ficam tão claras…
Obrigado pela atenção de vocês!

pmlm

Isso não é totalmente verdade. Não é obrigatório que sejam tratadas, mas podem ser.

Andre_Fonseca

InsaneChess:
Prezados, boa noite.
No “Java, Use a Cabeça !”, achei a seguinte informação sobre exceções e não consigo concordar, acredito ser por falta de conhecimento.

No Livro fala isso: O compilador não se importa com exceções do tipo “RunTimeException”, ou seja, ela não precisa ser declarada ou inserida em um bloco Try/catch.

Eu pensso assim:
Não é exatamente as Exceções em tempo de execução que nós temos de tratar? Não são exatamente elas que precisamos realizar o manuseio de exceção caso algo incorreto seja digitado ou aconteça longe de ser um problema de lógica?
(Exemplo: Criar uma conexão com Banco de dados, é uma RunTime exception?, por que se for eu lembro que era obrigatório realizar o tratamento de Try/Catch)

As demais exceções, conhecidas como “Exceções Verificadas” que são obrigado o uso do Try/Catch?
Quando vc tenta inserir algo em um indice que não existe na Matriz criada, é um erro de exceção verificada? Por que se for, não lembro ser obrigado de utilizar o Try/Catch sempre que crio uma Matriz…

Enfim, Alguem que tiver um tempinho sobrando pode me explicar detalhadamente isso, de um jeito que “Um burro” possa entender? Hehe

oi,

o que acontece é mais ou menos assim:

excessões checked - ops, aconteceu um erro de lógica no meu programa mas eu ainda posso tentar corrigi-lo
excessões não checked - ops, meu programa travou, vou ter que reiniciar a JVM, não tem mais nada que eu possa fazer para corrigi-lo

pmlm

Nada a ver…

excessões checked - é provável acontecer aqui um erro, obriga o programador a decidir o que fazer para contorná-lo
excessões não checked - erro não provável de acontecer e que não é obrigatório ser apanhado (mas que pode ser apanhado) e não acontece isso de não poder fazer nada para corrigir

Andre_Fonseca

pmlm:
André Fonseca:

o que acontece é mais ou menos assim:

excessões checked - ops, aconteceu um erro de lógica no meu programa mas eu ainda posso tentar corrigi-lo
excessões não checked - ops, meu programa travou, vou ter que reiniciar a JVM, não tem mais nada que eu possa fazer para corrigi-lo


Nada a ver…

excessões checked - é provável acontecer aqui um erro, obriga o programador a decidir o que fazer para contorná-lo
excessões não checked - erro não provável de acontecer e que não é obrigatório ser apanhado (mas que pode ser apanhado) e não acontece isso de não poder fazer nada para corrigir

você fala português? eu falei alguma coisa diferente do que você falou? já pensou em fazer um curso de interpretação de texto?

pmlm

Sim, falo português (de Portugal, mas português)

Agora dizer que "ops, meu programa travou, vou ter que reiniciar a JVM, não tem mais nada que eu possa fazer para corrigi-lo " não me parece igual a “erro não provável de acontecer e que não é obrigatório ser apanhado (mas que pode ser apanhado)”

Pela minha interpretação de português, tu dizes que uma exception unchecked não pode ser apanhada e termina com a aplicação. Eu digo que tal não é verdade. São coisa diferentes.

aluisiodsv

Pq tá errado o q eu disse ? É óbvio q dá pra tratar, mas não tem como ser obrigatório…

pmlm

Se é óbvio que dá para tratar, porque disseste “Exceções do tipo RunTime não podem ser tratadas.”?

aluisiodsv

Opaaaa …
erro meu … !!
Eu quis dizer q não tem como ser obrigatório o tratamento.

Criado 13 de setembro de 2010
Ultima resposta 13 de set. de 2010
Respostas 11
Participantes 5