Nested Try-Catch
Em Engenharia de Software, o conceito de concisão e correção leva a criação de diversos Design Patterns que buscam resolver problemas conhecidos, de maneira documentada. Um dos principais problemas que existem no desenvolvimento de software, especialmente no que diz respeito à linguagens orientadas a objetos é o de tratamento de exceções[1].
O conceito de Nested Try-Catch, desenvolvido por experientes analistas de sistemas brasileiros, resolve de maneira muito elegante este problema[2]
Problema editar
Suponha que você quer abrir um arquivo em Java. Como todos sabemos, ao ler um arquivo, pode ser lançada uma exceção, que deve ser tratada:
try {
FileInputStream fin=new FileInputStream("D:\\testout.txt");
int i=fin.read();
System.out.print((char)i);
fin.close();
} catch(Exception e) {
System.out.println(e);
}
Ora, se eu receber uma exception, o arquivo não é lido!
O pattern Nested try-catch nos ajuda a resolver de maneira muito elegante o problema encontrado acima.
Solução usando Nested Try-Catch editar
A definição do pattern Nested Try-Catch diz o seguinte:
Se eu recebo uma exception chamando um trecho de código, o melhor meio de resolver esse problema é chamando o código de novo dentro da exception.
Analisando o código acima, ao transportá-lo para o pattern, temos a seguinte situação:
try {
FileInputStream fin=new FileInputStream("D:\\testout.txt");
int i=fin.read();
System.out.print((char)i);
fin.close();
} catch(Exception e) {
try {
FileInputStream fin=new FileInputStream("D:\\testout.txt");
int i=fin.read();
System.out.print((char)i);
fin.close();
} catch(Exception e) {
//Podemos repetir quantas vezes for necessário!
//Ou mesmo chamar em loop...
}
}
Olhando o código acima, temos 2x mais certeza que ele funciona e terá o resultado desejado, uma vez que a execução dele será feita mesmo em caso de exceção (por exemplo, o arquivo estava sendo acessado por outro processo).
Com isso, podemos concluir que:
- O padrão Nested Try-Catch aumenta a confiabilidade do código;
- Diminui a quantidade de erros de execução (exceção);
- Deixa o código mais legível;
- É thread-safe;
- Pode ser aplicado em qualquer situação e em qualquer linguagem.
Referências editar
- ↑ «5 Reasons Why Business Exceptions Are a Bad Idea». reflectoring.io (em inglês). 4 de junho de 2019. Consultado em 7 de janeiro de 2020
- ↑ «Pesquisador brasileiro cria aplicativo para detecção precoce de Alzheimer». EXAME. Consultado em 7 de janeiro de 2020