Tratamento de erros

Nesse capítulo o autor da envase em usar exceções para realizar o tratamento de erros, ao invés de retirnar códigos. A estrutura ideia seria criar um try-catch-finally, veja o exemplo abaixo:

public List<RecordedGrip> retrieveSection(String sectionName) {

try {

FileInputStream stream = new FileInputStream(sectionName);

stream.close();

} catch (FileNotFoundException e) {

throw new StorageException("retrieval error", e);

}

return new ArrayList<RecordedGrip>();

}

Achei interessante a abordagem do autor ao recomendar utilizar wrapper para empacotar as exceções e não criar exceções verificadas (pg 108). Para não extender esse resumo, basicamente utilize apenas uma excepção, por exemplo, FileNotFoundException, e não todos os erros possíveis na inicialização da classe FileInputStream.

Geralmente, uma única classe de exceção está bom para uma parte específica do código. As informações enviadas com exceção podem distinguir 

os erros. Use classes diferentes apenas se houver casos em que você queira capturar uma exceção e permitir que a outra passe normalmente.


Importante desse capítulo: Não retorne null

Em sistemas grandes, complexos, robustos, quando um NullPointerException for lançado talvez já seja tarde demais para entender onde está o problema do software. Quando retornamos null, basicamente estamos criando mais trabalho para nós mesmos e jogando problemas em cima de nossos chamadores. Só basta esquecer uma verificação null para que o aplicativo fique fora de controle.