1. Capturar exceções específicas
Sempre capture primeiro a exceção mais específica. Isso ajuda a identificar o problema exato e a tratá-lo de maneira adequada.
try { // Code that may throw an exception } catch (FileNotFoundException e) { // Handle FileNotFoundException } catch (IOException e) { // Handle other IOExceptions }
2. Evite blocos de captura vazios
Blocos catch vazios podem ocultar erros e dificultar a depuração. Sempre registre a exceção ou execute alguma ação.
try { // Code that may throw an exception } catch (IOException e) { e.printStackTrace(); // Log the exception }
3. Use o bloco finalmente para limpeza
O bloco final é usado para executar códigos importantes, como fechar recursos, independentemente de uma exceção ser lançada ou não.
BufferedReader reader = null; try { reader = new BufferedReader(new FileReader("file.txt")); // Read file } catch (IOException e) { e.printStackTrace(); } finally { if (reader != null) { try { reader.close(); } catch (IOException e) { e.printStackTrace(); } } }
4. Não pegue o que pode ser jogado
Evite capturar Throwable, pois inclui erros que não devem ser capturados, como OutOfMemoryError.
try { // Code that may throw an exception } catch (Exception e) { e.printStackTrace(); // Catch only exceptions }
5. Registrar exceções corretamente
Use uma estrutura de registro como Log4j ou SLF4J para registrar exceções em vez de usar System.out.println.
private static final Logger logger = LoggerFactory.getLogger(MyClass.class); try { // Code that may throw an exception } catch (IOException e) { logger.error("An error occurred", e); }
6. Relançar exceções se necessário
Às vezes, é melhor relançar a exceção depois de registrá-la ou realizar alguma ação.
try { // Code that may throw an exception } catch (IOException e) { logger.error("An error occurred", e); throw e; // Rethrow the exception }
7. Use blocos multi-captura
No Java 7 e posterior, você pode capturar várias exceções em um único bloco catch.
try { // Code that may throw an exception } catch (IOException | SQLException e) { e.printStackTrace(); // Handle both IOException and SQLException }
8. Evite o uso excessivo de exceções para fluxo de controle
Exceções não devem ser usadas para fluxo de controle regular. Eles são destinados a condições excepcionais.
// Avoid this try { int value = Integer.parseInt("abc"); } catch (NumberFormatException e) { // Handle exception } // Prefer this if (isNumeric("abc")) { int value = Integer.parseInt("abc"); }
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3