🧩 Exercícios: Tratamento Robusto de Exceções e Custom Exceptions
Spec Sistemas Com Java • Trilha Progressiva em 4 Níveis
🧭 Navegação Pedagógica
-
📖 Teoria do Capítulo 💻 Exemplos 📊 Slides 🧠 Quiz
🎯 Nível 1: Fundamentos
Problema 11.1 — Exceções Checadas vs Não-Checadas (Checked vs Unchecked)
Contexto: Exceções Checadas vs Não-Checadas (Checked vs Unchecked) no contexto de Tratamento Robusto de Exceções e Custom Exceptions.
Requisitos de Execução:
- Demonstrar diferença entre herdar de
Exception(checagem obrigatória) eRuntimeException.
Resultado Esperado
Hierarquia de exceções compreendida e aplicada com clareza semântica.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_11_1_SeuNome - Envie na tarefa:
Atividade Cap 11 - Tratamento Robusto de Exceções e Custom Exceptions
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;
public class DominioException extends RuntimeException {
public DominioException(String msg) { super(msg); }
}
// Validacao adicional
class ValidadorStatus { public static boolean ok() { return true; } }
🔍 Nível 2: Prática
Problema 11.2 — Gerenciamento Automático com try-with-resources (AutoCloseable)
Contexto: Gerenciamento Automático com try-with-resources (AutoCloseable) no contexto de Tratamento Robusto de Exceções e Custom Exceptions.
Requisitos de Execução:
- Abrir conexões e leitores dentro do bloco
try (Scanner sc = ...)com fechamento garantido.
Resultado Esperado
Recursos fechados deterministicamente pelo try-with-resources.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_11_2_SeuNome - Envie na tarefa:
Atividade Cap 11 - Tratamento Robusto de Exceções e Custom Exceptions
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;
import java.io.BufferedReader;
import java.io.StringReader;
public class TryResourcesDemo {
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new StringReader("Dados"))) {
System.out.println("Lido: " + br.readLine());
} catch (Exception e) {
e.printStackTrace();
}
}
}
⚡ Nível 3: Integração
Problema 11.3 — Multi-Catch de Exceções e Encadeamento com Chained Exceptions
Contexto: Multi-Catch de Exceções e Encadeamento com Chained Exceptions no contexto de Tratamento Robusto de Exceções e Custom Exceptions.
Requisitos de Execução:
- Capturar múltiplas exceções em cláusula única
catch (IOException | SQLException ex)empacotando a causa raiz.
Resultado Esperado
Causa raiz preservada em exceção de alto nível encapsulada.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_11_3_SeuNome - Envie na tarefa:
Atividade Cap 11 - Tratamento Robusto de Exceções e Custom Exceptions
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;
public class MultiCatchDemo {
public static void processar() {
try {
int.class.getDeclaredMethod("inexistente");
} catch (NoSuchMethodException | SecurityException e) {
throw new DominioException("Falha de reflexao: " + e.getMessage());
}
}
}
🏆 Nível 4: Desafio Corporativo
Problema 11.4 — Suprimindo Exceções e Métodos addSuppressed()
Contexto: Suprimindo Exceções e Métodos addSuppressed() no contexto de Tratamento Robusto de Exceções e Custom Exceptions.
Requisitos de Execução:
- Inspecionar exceções suprimidas durante o fechamento de múltiplos recursos no try-with-resources.
Resultado Esperado
Exceções suprimidas inspecionadas via `getSuppressed()`.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_11_4_SeuNome - Envie na tarefa:
Atividade Cap 11 - Tratamento Robusto de Exceções e Custom Exceptions
🔑 Gabarito de Código & Solução Comentada
package com.empresa.sistemas;
public class SuppressedExceptionDemo {
public static void main(String[] args) {
Throwable t = new RuntimeException("Principal");
t.addSuppressed(new RuntimeException("Suprimida no close"));
System.out.println("Total de suprimidas: " + t.getSuppressed().length);
}
}
| ⬅️ Voltar ao Índice de Exercícios | 📚 Sumário de Tópicos |