Spec Sistemas Com Java • Trilha Progressiva em 4 Níveis


🧭 Navegação Pedagógica


🎯 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:

  1. Demonstrar diferença entre herdar de Exception (checagem obrigatória) e RuntimeException.

Resultado Esperado

Hierarquia de exceções compreendida e aplicada com clareza semântica.

📤 Instruções de Entrega (Microsoft Teams)

  1. Salve o arquivo como: Atividade_11_1_SeuNome
  2. 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:

  1. 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)

  1. Salve o arquivo como: Atividade_11_2_SeuNome
  2. 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:

  1. 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)

  1. Salve o arquivo como: Atividade_11_3_SeuNome
  2. 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:

  1. 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)

  1. Salve o arquivo como: Atividade_11_4_SeuNome
  2. 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