Programação Orientada À Objetos: Exceções
5 min read
Programação Orientada À Objetos: Exceções
A programação orientada à objetos é um paradigma de programação que se baseia na ideia de que os dados e as operações sobre eles podem ser organizados em unidades chamadas objetos.

Os objetos podem ter atributos, que são as características dos objetos, e métodos, que são as ações que os objetos podem realizar. Os objetos podem se relacionar uns com os outros através de herança, que é a capacidade de um objeto herdar atributos e métodos de outro objeto, e polimorfismo, que é a capacidade de um objeto se comportar de maneiras diferentes dependendo do contexto.
Um dos conceitos importantes da programação orientada à objetos é o de exceção. Uma exceção é um evento anormal ou inesperado que ocorre durante a execução de um programa, e que pode interromper o fluxo normal do programa. Por exemplo, uma exceção pode ocorrer se tentarmos dividir um número por zero, acessar um elemento de um vetor que não existe, abrir um arquivo que não está disponível, ou converter uma string em um número que não é válido.
As exceções podem ser causadas por erros do programador, por falhas do sistema, ou por situações imprevisíveis. Em qualquer caso, as exceções devem ser tratadas de forma adequada, para evitar que o programa termine abruptamente, ou que produza resultados incorretos ou indesejados. Para isso, a programação orientada à objetos oferece uma estrutura de controle chamada bloco try-catch-finally.
Um bloco try-catch-finally é uma forma de lidar com as exceções que podem ocorrer em um trecho de código. O bloco try-catch-finally é composto por três partes:
- O bloco try contém o código que pode gerar uma exceção. Se nenhuma exceção ocorrer, o bloco try é executado normalmente, e o bloco catch é ignorado. Se uma exceção ocorrer, o bloco try é interrompido, e o controle passa para o bloco catch correspondente.
- O bloco catch contém o código que trata a exceção que ocorreu no bloco try. O bloco catch recebe como parâmetro um objeto que representa a exceção, e pode acessar informações sobre ela, como o tipo, a mensagem, e a pilha de chamadas. O bloco catch pode executar ações para corrigir o problema, ou para informar o usuário sobre ele. Pode haver mais de um bloco catch, para tratar diferentes tipos de exceções.
- O bloco finally contém o código que é executado após o bloco try ou o bloco catch, independentemente de ter ocorrido uma exceção ou não. O bloco finally é opcional, mas é útil para realizar ações de finalização, como fechar arquivos, liberar recursos, ou restaurar o estado do programa.
A seguir, vamos ver um exemplo de como usar um bloco try-catch-finally em Java, uma linguagem de programação orientada à objetos. Suponha que queremos criar um método que recebe uma string como parâmetro, e retorna o valor inteiro correspondente. Se a string não for um número válido, queremos lançar uma exceção do tipo NumberFormatException, e mostrar uma mensagem de erro.

A seguir, vamos ver um exemplo de como usar um bloco try-catch-finally em Java, uma linguagem de programação orientada à objetos. Suponha que queremos criar um método que recebe uma string como parâmetro, e retorna o valor inteiro correspondente. Se a string não for um número válido, queremos lançar uma exceção do tipo NumberFormatException, e mostrar uma mensagem de erro.
Java
public static int stringToInt(String s) throws NumberFormatException {
int n = 0; // variável para armazenar o valor inteiro
try {
// tenta converter a string em um inteiro
n = Integer.parseInt(s);
} catch (NumberFormatException e) {
// trata a exceção se a string não for um número válido
System.out.println(“Erro: a string ” + s + ” não é um número válido.”);
// relança a exceção para o método chamador
throw e;
} finally {
// mostra uma mensagem de finalização
System.out.println(“Fim da conversão.”);
}
// retorna o valor inteiro
return n;
}
Neste exemplo, usamos o método parseInt da classe Integer para converter a string em um inteiro. Se a string não for um número válido, o método parseInt lança uma exceção do tipo NumberFormatException, que é capturada pelo bloco catch. No bloco catch, mostramos uma mensagem de erro, e relançamos a exceção para o método chamador. No bloco finally, mostramos uma mensagem de finalização. Se a string for um número válido, o bloco catch é ignorado, e o valor inteiro é retornado.
Para testar o método stringToInt, podemos usar o seguinte código:
JAVA
public static void main(String[] args) {
// cria um vetor de strings
String[] strings = {“10”, “20”, “30”, “40”, “50”, “abc”, “60”, “70”, “80”, “90”};
// percorre o vetor de strings
for (String s : strings) {
try {
// tenta converter a string em um inteiro
int n = stringToInt(s);
// mostra o resultado da conversão
System.out.println(“A string ” + s + ” foi convertida em ” + n);
} catch (NumberFormatException e) {
// trata a exceção se ocorrer
System.out.println(“Não foi possível converter a string ” + s);
}
}
}
Neste código, criamos um vetor de strings, e percorremos ele com um laço for. Para cada string, tentamos converter ela em um inteiro, usando o método stringToInt. Se o método stringToInt lançar uma exceção, tratamos ela com outro bloco catch, e mostramos uma mensagem de erro. Se não, mostramos o resultado da conversão.
A saída do programa é a seguinte:
A string 10 foi convertida em 10
Fim da conversão.
A string 20 foi convertida em 20
Fim da conversão.
A string 30 foi convertida em 30
Fim da conversão.
A string 40 foi convertida em 40
Fim da conversão.
A string 50 foi convertida em 50
Fim da conversão.
Erro: a string abc não é um número válido.
Fim da conversão.
Não foi possível converter a string abc
A string 60 foi convertida em 60
Fim da conversão.
A string 70 foi convertida em 70
Fim da conversão.
A string 80 foi convertida em 80
Fim da conversão.
A string 90 foi convertida em 90
Fim da conversão.
Podemos observar que o programa converteu as strings que eram números válidos, e tratou a exceção que ocorreu quando tentou converter a string “abc”. Também podemos ver que o bloco finally foi executado em todos os casos, mostrando a mensagem de finalização.

Conclusão
Este foi um exemplo de como usar blocos try-catch-finally na programação orientada à objetos, para tratar as exceções que podem ocorrer em um programa. Esperamos que este post tenha sido útil para você, e que você tenha aprendido algo novo sobre este assunto. Se você gostou deste post, compartilhe-o com seus amigos, e deixe um comentário abaixo. Obrigado pela sua atenção, e até a próxima!