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.
O conceito de Nested Try-Catch, desenvolvido por experientes analistas de sistemas brasileiros, resolve de maneira muito elegante este problema
Problema 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 A definição do pattern Nested Try-Catch diz o seguinte: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