MAPA – PROGRAMAÇÃO AVANÇADA – 54_2025
O desenvolvimento de sistemas envolve lidar com uma série de situações inesperadas que podem comprometer a execução normal de uma aplicação. Em um cenário simples, como um programa de cadastro de produtos, o usuário pode fornecer uma entrada incorreta ao digitar letras em vez de números no campo destinado ao preço. Esse tipo de falha, aparentemente trivial, pode causar a interrupção imediata do programa e afetar toda a experiência do usuário. Quando ampliamos essa análise para ambientes corporativos mais complexos, como sistemas bancários, hospitalares ou de gestão empresarial, a gravidade de erros não tratados se torna ainda mais evidente, podendo resultar em perdas financeiras, falhas de segurança ou até impactos na vida de pessoas.
A linguagem Java, ao longo de sua evolução, incorporou um modelo robusto para o tratamento de exceções, possibilitando que erros sejam capturados e tratados de maneira controlada. Esse mecanismo é baseado em blocos como try, catch e finally, que permitem definir pontos de verificação e de recuperação dentro do código. Dessa forma, em vez de o programa encerrar abruptamente diante de uma falha, ele consegue executar rotinas de tratamento, emitir mensagens claras ao usuário e até corrigir o problema quando possível. Essa abordagem não apenas melhora a confiabilidade do sistema, mas também reforça a percepção de qualidade por parte do cliente.
Em sistemas distribuídos e aplicações que dependem de integrações externas, como conexões com bancos de dados ou serviços via rede, a ocorrência de erros é praticamente inevitável. Uma conexão pode ser interrompida por instabilidade na internet, um arquivo pode estar ausente no momento da leitura ou um valor numérico pode ultrapassar os limites esperados. Nesses casos, a simples ausência de tratamento adequado pode levar a falhas em cascata, comprometendo módulos inteiros da aplicação. Por isso, entender e aplicar corretamente os recursos de tratamento de exceções é um diferencial essencial para desenvolvedores que buscam qualidade e resiliência em seus projetos.
Outro ponto importante está na separação entre o fluxo normal do programa e o fluxo de tratamento de erros. Sem um mecanismo estruturado, o desenvolvedor precisaria inserir múltiplas verificações condicionais em diversas partes do código, tornando-o confuso e de difícil manutenção. O modelo de exceções de Java, ao contrário, centraliza e organiza o tratamento, permitindo que o código principal se mantenha mais limpo e legível. Essa característica está diretamente associada a boas práticas de engenharia de software, uma vez que facilita a manutenção e a evolução dos sistemas ao longo do tempo.
Além da captura e tratamento direto, a linguagem também oferece o mecanismo de propagação de exceções, utilizando a palavra-chave throws. Isso significa que, em determinadas situações, o método que detecta o erro pode não ser o mais apropriado para resolvê-lo, delegando essa responsabilidade para métodos de níveis superiores. Essa propagação é útil, por exemplo, em sistemas em camadas, onde a lógica de interface com o usuário, a lógica de negócio e a persistência de dados estão separadas. Cada camada pode decidir se trata o erro ou se o repassa adiante, até que seja devidamente resolvido em um ponto mais estratégico.
Um exemplo prático está na leitura de arquivos. Um método que tenta abrir um arquivo inexistente pode lançar uma exceção FileNotFoundException. Caso esse método esteja em um módulo de acesso a dados, talvez ele não deva decidir o que fazer diante dessa falha, mas apenas notificar a camada superior por meio da propagação. Assim, o módulo de interface com o usuário pode ser o responsável por exibir uma mensagem clara, sugerindo ao usuário verificar se o arquivo realmente existe ou se o caminho foi digitado corretamente. Esse tipo de organização mostra a força do modelo de exceções como ferramenta para manter a separação de responsabilidades dentro de um sistema.
Outro aspecto essencial é a possibilidade de criação de exceções personalizadas. Muitas vezes, as exceções oferecidas pela biblioteca padrão de Java não são suficientes para expressar problemas específicos de um domínio de negócio. Imagine, por exemplo, um sistema bancário em que uma tentativa de saque ultrapassa o saldo disponível. Embora fosse possível lançar uma exceção genérica, como IllegalArgumentException, criar uma exceção própria, como SaldoInsuficienteException, torna o código mais expressivo e facilita a manutenção. Ao lançar uma exceção personalizada, o desenvolvedor consegue comunicar de forma clara o tipo exato de problema ocorrido, permitindo que ele seja tratado de maneira diferenciada.
Esse uso de exceções personalizadas também facilita a vida de equipes de manutenção. Ao se depararem com logs ou mensagens de erro, os desenvolvedores conseguem identificar rapidamente a causa do problema, sem a necessidade de análises longas ou confusas. Em grandes projetos, onde diferentes equipes trabalham em conjunto, essa clareza se torna ainda mais valiosa, reduzindo custos de suporte e acelerando o processo de correção de falhas.
Portanto, o tratamento de exceções não deve ser visto como um recurso opcional ou secundário dentro do desenvolvimento em Java, mas como uma prática essencial para garantir a robustez, a clareza e a confiabilidade dos sistemas. Ele está diretamente relacionado às boas práticas de engenharia de software e deve ser incorporado desde as primeiras fases de desenvolvimento, não apenas em momentos de correção de falhas. Assim, os sistemas produzidos tornam-se mais resilientes, preparados para lidar com imprevistos e capazes de oferecer uma experiência consistente ao usuário, independentemente dos erros que possam surgir.
JUNIOR, E. A. O.; PEREIRA, R. de L. Programação Avançada. Maringá: Unicesumar, 2016. Reimpresso em 2023.
Assim, é necessário para esta atividade MAPA que você:
Questão 1. Explique, com suas próprias palavras, a importância do tratamento de exceções em Java e como ele contribui para a confiabilidade dos sistemas.
Questão 2. Desenvolva um exemplo de código em Java que utilize try-catch-finally para capturar uma exceção de entrada inválida ao tentar converter uma String em número decimal.
import java.util.Scanner;
public class CadastroProduto {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print(“Digite o preço do produto: “);
double preco = Double.parseDouble(sc.nextLine());
System.out.println(“Preço com desconto: ” + (preco * 0.9));
/* incluir: “Erro: valor inválido! Digite um número válido.”
sc.close();
System.out.println(“Execução finalizada.”);
*/
}
}
Questão 3. Descreva como a propagação de exceções (uso de throws) pode ser aplicada em cenários mais complexos de sistemas.
Questão 4. Analise criticamente a possibilidade de criação de exceções personalizadas (extends Exception) e explique em que situações isso se torna vantajoso.
Como entregar a atividade:
A atividade deve ser elaborada em um arquivo de TEXTO, seguindo o TEMPLATE disponível no MATERIAL DA DISCIPLINA no Studeo. O arquivo final deve ser salvo com a extensão .PDF ou .DOC. Após finalizar, você deve anexar o arquivo no ambiente da atividade dentro do Studeo.
Dicas para realizar a atividade:
Durante as aulas, o professor fornecerá dicas que podem ser utilizadas para a confecção das suas atividades. Assim, é de suma importância participar das aulas ao vivo ou assisti-las
posteriormente.
Assista às aulas conceituais da disciplina.
Orientações importantes:
– Acesse o link com um vídeo tutorial para ajudá-lo nesse processo de criação e desenvolvimento. O acesso deverá ser realizado em: Arquivos > Material da Disciplina.
– Lembre-se de que evidências de cópias de materiais, incluindo de outros estudantes, sem devidas referências, serão inquestionavelmente zeradas. As citações e referências, mesmo que do livro da disciplina, devem ser realizadas conforme as normas da Instituição de Ensino.
– Não são permitidas correções parciais no decorrer do módulo, ou seja, o famoso: “professor, veja se minha atividade está certa?”. Isso invalida seu processo avaliativo. Lembre-se que a interpretação da atividade também faz parte da avaliação.
– Procure sanar suas dúvidas junto à mediação em tempo hábil sobre o conteúdo exigido na atividade, de modo que consiga realizar sua participação.
– Atenção ao prazo de entrega, evite envio de atividade em cima do prazo. Você pode ter algum problema com internet, computador, software etc., e os prazos não serão flexibilizados, mesmo em caso de comprovação.
– Anexe o arquivo na atividade, clicando sobre o botão Selecionar arquivo.
– Após anexar o trabalho, certificar-se que se trata do arquivo correto, clique no botão Responder e, posteriormente, em Finalizar Questionário (após “Finalizar o Questionário”, não será possível reenviar a atividade ou realizar qualquer modificação no arquivo enviado).
Boa atividade!

Nossa equipe é composta por profissionais especializados em diversas áreas, o que nos permite oferecer uma assessoria completa na elaboração de uma ampla variedade de atividades. Estamos empenhados em garantir a autenticidade e originalidade de todos os trabalhos que realizamos.
Ficaríamos muito satisfeitos em poder ajudar você. Entre em contato conosco para solicitar o seu serviço.