Вы находитесь на странице: 1из 20

Programação Orientada a Objeto

Prof. Anı́sio Silva


email anisio.silva@fisica.ufmt.br

Instituto de Engenharia -UFMT

20/08/2018

Prof. Anı́sio Silva email anisio.silva@fisica.ufmt.br Programação


(Instituto de Engenharia
Orientada a-UFMT)
Objeto 20/08/2018 1 / 18
Construção de software robusto

Programação orientada a objetos:

Prof. Anı́sio Silva email anisio.silva@fisica.ufmt.br Programação


(Instituto de Engenharia
Orientada a-UFMT)
Objeto 20/08/2018 2 / 18
Construção de software robusto

Software robusto: habilidade de reagir diante de casos não incluı́dos na


sua especificação.

Prof. Anı́sio Silva email anisio.silva@fisica.ufmt.br Programação


(Instituto de Engenharia
Orientada a-UFMT)
Objeto 20/08/2018 3 / 18
Exceções

O que é uma exceção?


Uma exceção é um sinal que indica que algum tipo de condição
excepcional ocorreu durante a execução do programa
Assim, exceções estão associadas a condições de erro que não tinham
como ser verificadas durante a compilação do programa.
Situação que impossibilita a conclusão de uma computação.
Situação pouco comum e pouco frequente que está em desacordo
com o nı́vel de abstração atual.

O que elas tem em comum?


O sistema encontra-se em um estado inválido no qual é impossı́vel fornecer
um serviço.

Prof. Anı́sio Silva email anisio.silva@fisica.ufmt.br Programação


(Instituto de Engenharia
Orientada a-UFMT)
Objeto 20/08/2018 4 / 18
Exceções

Uma exceção pode ser lançada quando:


Um ı́ndice inexistente de um array é acessado;
O arquivo que o aplicativo está tentando abrir não existe;
A conexão com a rede está apresentando problemas.
Ocorre uma divisão de um número inteiro por zero, por exemplo.

Prof. Anı́sio Silva email anisio.silva@fisica.ufmt.br Programação


(Instituto de Engenharia
Orientada a-UFMT)
Objeto 20/08/2018 5 / 18
Exceções

As duas atividades associadas à manipulação de uma exceção


são:
geração:a sinalização de que uma condição excepcional ocorreu, por
exemplo: um erro.
captura:a manipula,ão (tratamento) da situação excepcional, onde as
ações necessárias para aa recuperação da situação de erro são
definidas.

Prof. Anı́sio Silva email anisio.silva@fisica.ufmt.br Programação


(Instituto de Engenharia
Orientada a-UFMT)
Objeto 20/08/2018 6 / 18
Exceções

Para cada exceção que pode ocorrer durante a execução do código,


um bloco de ações de tratamento (conhecido como exception
handler) deve ser especificado.
O compilador Java verifica e força que toda exceção “não-trivial”
tenha um bloco de tratamento associado.
As exceções desse tipo são chamadas de ”checked exceptions”.

Prof. Anı́sio Silva email anisio.silva@fisica.ufmt.br Programação


(Instituto de Engenharia
Orientada a-UFMT)
Objeto 20/08/2018 7 / 18
Hierarquia de exceção do Java
https://docs.oracle.com/javase/tutorial/essential/exceptions/definition.html

Figura: Hierarquia da classe Throwable

Prof. Anı́sio Silva email anisio.silva@fisica.ufmt.br Programação


(Instituto de Engenharia
Orientada a-UFMT)
Objeto 20/08/2018 8 / 18
Tratamento de exceções

Em Java, uma exceção é um objeto herdado da classe:


java.lang.Exception - o compilador obriga a tratar ou propagar.
java.lang.RuntimeException - o compilador não obriga a tratar ou
propagar.
Quando lançada, uma exceção é propagada na pilha de chamadas de
métodos em execução, até que seja capturada (tratada) ou o
programa seja encerrado.

Prof. Anı́sio Silva email anisio.silva@fisica.ufmt.br Programação


(Instituto de Engenharia
Orientada a-UFMT)
Objeto 20/08/2018 9 / 18
Tratamento de exceções

Por que devo tratar minhas exceções?


O tratamento de exceções ajuda a aprimorar a tolerância a falhas de
um programa.
Vantagens:
Seu programa se tornar mais tolerante a falhas.
Programa mais robusto e claro.
O tratamento do erro, passa a ocorrer na classe responsável por
conhecer as regras.

Prof. Anı́sio Silva email anisio.silva@fisica.ufmt.br Programação


(Instituto de Engenharia
Orientada a-UFMT)
Objeto 20/08/2018 10 / 18
Sintaxe
1 try {
2 // bloco de codigo que inclui comandos que podem
gerar uma excecao
3 }
4 catch ( XExceptionType ex ) {
5 // bloco de tratamento associado a condicao de
excecao
6 // XException ou a qualquer uma de suas subclasses
7 // identificada aqui pelo objeto com referencia ex
8 }
9 catch ( YExceptionType ey ) {
0 // bloco de tratamento para a situacao de excecao
1 // YException ou a qualquer uma de suas subclasses
2 }
3 finally {
4 // bloco de codigo que sempre sera executado apos
5 // o bloco try , in depend enteme nte de sua conclusao
6 // ter ocorrido normalmente ou ter sido
interrompida
7 }
Prof. Anı́sio Silva email anisio.silva@fisica.ufmt.br Programação
(Instituto de Engenharia
Orientada a-UFMT)
Objeto 20/08/2018 11 / 18
Hierarquia Error

A hierarquia Error descreve erros internos e problemas ocasionados


pelo término de recursos dentro da máquina virtual Java.
Não se deve lançar um objeto desse tipo. Apenas a JVM deve fazer
uso das classes derivadas de Error.
Pouco se pode fazer quando um erro desse tipo acontece. Essas
situações, em geral, são bastante raras, portanto, não é exigido que
um programa trate tais exceções.

Prof. Anı́sio Silva email anisio.silva@fisica.ufmt.br Programação


(Instituto de Engenharia
Orientada a-UFMT)
Objeto 20/08/2018 11 / 18
Hierarquia Exception

Ao desenvolvermos aplicativos em Java, devemos utilizar as classes da


hierarquia Exception.
Esta também subdivide-se em duas, que são as exceções que derivam
de RuntimeException e as demais subclasses que estendem
diretamente a classe Exception (package java.lang).

Prof. Anı́sio Silva email anisio.silva@fisica.ufmt.br Programação


(Instituto de Engenharia
Orientada a-UFMT)
Objeto 20/08/2018 12 / 18
RuntimeException

Uma RuntimeException ocorre normalmente devido a erros de


programação.
Sendo assim, exceções desse tipo indicam condições que nunca devem
acontecer se o programa estiver implementado adequadamente.
Por essa razão, o compilador não exige que esse tipo de exceção seja
tratada, logo, são chamadas de “unchecked exceptions”.

Prof. Anı́sio Silva email anisio.silva@fisica.ufmt.br Programação


(Instituto de Engenharia
Orientada a-UFMT)
Objeto 20/08/2018 13 / 18
Exemplos de RuntimeException

Algumas subclasses de RuntimeException são:


NullPointerException
IndexOutOfBoundsException
ArrayIndexOutOfBoundsException
StringIndexOutOfBoundsException
ArithmeticException
ClassCastException
NegativeArraySizeException

Prof. Anı́sio Silva email anisio.silva@fisica.ufmt.br Programação


(Instituto de Engenharia
Orientada a-UFMT)
Objeto 20/08/2018 14 / 18
Boa Práticas:

Para evitar ClassCastException, use sempre instanceof:

1 public static Aluno co nverte ParaAl uno ( Object obj ) {


2 Aluno a = null ;
3 if ( obj instanceof Aluno ) {
4 a = ( Aluno ) obj ;
5 }
6 return a ;
7 }

Prof. Anı́sio Silva email anisio.silva@fisica.ufmt.br Programação


(Instituto de Engenharia
Orientada a-UFMT)
Objeto 20/08/2018 15 / 18
O Bloco finally

O bloco finally, quando presente, é sempre executado.


Em geral, ele inclui comandos que liberam recursos
que eventualmente possam ter sido alocados durante
o processamento do bloco try e que podem ser
liberados, independentemente de a execução ter
encerrado com sucesso ou ter sido interrompida por
uma condição de exceção.
A presença desse bloco é opcional.

Prof. Anı́sio Silva email anisio.silva@fisica.ufmt.br Programação


(Instituto de Engenharia
Orientada a-UFMT)
Objeto 20/08/2018 15 / 18
Tutoriais do Java

Getting Started
http://java.sun.com/docs/books/tutorial/getStarted/
Learning the Java Language
http://java.sun.com/docs/books/tutorial/java/

Prof. Anı́sio Silva email anisio.silva@fisica.ufmt.br Programação


(Instituto de Engenharia
Orientada a-UFMT)
Objeto 20/08/2018 16 / 18
Referências

Complete Java 2 Certification Study Guide Sybex


Java: Como programar Autores: H. M. Deitel e P. J. Deitel Editora:
Pearson – 6a Edição

Prof. Anı́sio Silva email anisio.silva@fisica.ufmt.br Programação


(Instituto de Engenharia
Orientada a-UFMT)
Objeto 20/08/2018 17 / 18
Dúvidas

Prof. Anı́sio Silva email anisio.silva@fisica.ufmt.br Programação


(Instituto de Engenharia
Orientada a-UFMT)
Objeto 20/08/2018 18 / 18

Вам также может понравиться