Não se espera que um programa em funcionamento normal execute
operações que perturbem o funcionamento de outros programas ou do
computador. Quando um programa o faz (este é o evento), supõe-se que seja acidentalmente ou por mal funcionamento ou por entrar em uma condição não prevista pelo programador. Por isso diz-se que o evento é inesperado. É necessário definir isto pois contraria o pensamento comum de que se algo é detectado então não é inesperado.
Erros são eventos inesperados que dificilmente (no juízo de valores de quem define Java) podem ser contornados durante a execução do programa escrito pelo programador da aplicação (em geral nós). Java diz pouco sobre o que gera erros (http://docs.oracle.com/javase/8/docs/api/java/lang/Error.html). Mesmo com essas poucas "dicas", é possível entender que funcionamento inesperado do hardware, sistema operacional, máquina virtual e outros que perturbam a aplicação podem provocar Erros.
Exceções são eventos inesperados que (eventualmente) podem ser contornados pelo programador da aplicação (http://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html) e por isso é dada ao programador da aplicação a chance de fazê-lo.
Explicações técnicas
O método main do seu programa é invocado pela JVM assim que ele começa a ser executado. Este invoca outros métodos, que invocam outras métodos, até chegar a uma instrução de máquina. Muitos desses métodos não foi você quem escreveu, alguns fazem parte da JVM, outros do Sistema Operacional. Há uma sequência (mais precisamente uma pilha) de métodos que foram invocados até checar à instrução de máquina.
Suponha que essa instrução causa uma exceção Por exemplo (hipotético, ilustrativo mas talvez inverossímil) uma instrução de máquina que soma o conteúdo do acumulador com o conteúdo de um endereço de memória é ADD <endereço>. O endereço não pode ser 00000000. A instrução ADD 00000000 não é válida. Sua execução é um evento inesperado e faria o processador lançar o equivalente a uma exceção. Se não for tratada no caminho, esta é propagada de volta na pilha de métodos invocados até chegar ao main, que imprime uma mensagem e aborta. Uma mensagem como: "Hello.java line 20: ADD 00000000: invalid address", seria de difícil compreensão pelo programador da aplicação.
Outro exemplo: Você esqueceu de instanciar um objeto e isso passou desapercebido pelos seus testes. O programa foi instalado no cliente que viu a mensagem "Programa.java line 239: null pointer exception". O que ele pode fazer para lidar com essa mensagem?
Note que para pelo menos um dos programadores envolvidos, qualquer que seja a mensagem de erro, ela fará sentido. Para algum (talvez outro) além de fazer sentido, ele é capaz de traduzi-la em algo mais apropriado.
Exceções são previsíveis e evitáveis, tal que comandos específicos para seu tratamento não são essenciais, mas esse tipo de tratamento dificulta a leitura e transmissão do código entre programadores. Observando isso, Java tem comandos específicos para tratamento de exceções.
Em Java...
...Erros e Exceções em Java são objetos que podem ser usados como superclasses (ou seja nós podemos criar nossos próprios erros e exceções). Estes são lançados por algum comando ou método.
Quando usamos estes métodos em nossos métodos, ou capturamos e tratamos as exceções, ou as passamos adiante (na pilha de métodos invocados). Os comandos específicos para isso são throw, throws, try, catch e finally.
Este é o blog de relacionamento com alunos de Fábio Nakano.
Desejo testar se esta mídia facilita a comunicação e aprendizado de conteúdo.
Gostaria que vocès dessem notas mais altas para posts que ajudaram mais a entender o assunto (e não por outro critério, por exemplo o melhor escrito ou o mais "bonito")
fabionakano at usp dot br
Prédio A1, segundo andar - Sala 204E
Caso precise do mapa do Campus:http://each.uspnet.usp.br/site/mapa.php
Siga-me por email preenchendo a caixa abaixo.
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário