Programação defensiva: uma estratégia para prevenção de erros \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 22 Horas 

 14 Min 

 18 Seg 

   Tempo restante da oferta: 22 14 18 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Programação defensiva: uma estratégia para prevenção de erros  [ Desenvolvimento ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento) 

# Programação defensiva: uma estratégia para prevenção de erros

 Como proteger o código de possíveis erros? Confira neste artigo o que vem a ser a programação defensiva.

 [ Marylene Guedes ](https://www.treinaweb.com.br/blog/autor/marylene-guedes) 3 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/05/capa-programacao-defensiva-min.png)  

Quando você está desenvolvendo um código, provavelmente você quer que ele seja seguro e confiável. Por isso, o quanto mais você conseguir prever os erros que possam vir a acontecer no software, ou seja, a pensar defensivamente, mais confiável seu código estará.

Sendo assim, veremos neste artigo sobre a programação defensiva, uma das técnicas mais eficazes para evitar erros e problemas no seu código.

 [ ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/06/ebook-logica-de-programacao.jpg) ](https://www.treinaweb.com.br/ebook/logica-de-programacao/)

### O que é a programação defensiva?

A programação defensiva é um conjunto de ações e técnicas que podemos aplicar para tentar garantir o funcionamento contínuo do software sob situações não previstas. Em outras palavras, visa diminuir a chance de falhas e evitar erros que podem ocorrer através de comportamentos dos usuários, como por exemplo, entradas inválidas e falhas de integridade.

O objetivo principal é garantir estabilidade e que seja o mais robusto o possível, ou seja, o software não para: ele continua funcionando ainda que os resultados não sejam aqueles que eram esperados.

É uma abordagem que muitos desenvolvedores de software utilizam justamente por se basear nessa ideia de antecipar possíveis problemas, reduzir a probabilidade de erros e adotar medidas preventivas durante todo o processo de desenvolvimento, além de claro, melhorar a experiência do usuário com o software desenvolvido. Isso não quer dizer que um software nunca possa falhar, mas ele deve permitir identificar e corrigir rapidamente.

### Algumas técnicas utilizadas

“Prever” erros de usuários ou de componentes requer atenção, por isso veremos sobre algumas técnicas mais comuns que são utilizadas na programação defensiva.

[  ![Lógica Orientada a Objetos - Primeiros Passos](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/logica-oo.svg)   Curso Lógica Orientada a Objetos - Primeiros Passos Conhecer o curso ](https://www.treinaweb.com.br/curso/logica-orientada-a-objetos-primeiros-passos)

#### Validação de entradas

As entradas são um ponto importante para levar em consideração, pois podem haver entradas inesperadas e imprevisíveis, podendo ser inclusive entradas mal-intencionadas. Nós não temos um controle do que o usuário vai colocar na entrada, mas em contrapartida, podemos definir algumas regras básicas que podem nos ajudar, pensando também na segurança do software.

Verificar quais são as entradas válidas, verificando se ela é aceitável ou não, se aceita somente valores numéricos, se aceita negativos ou não… Por isso, deve-se verificar e validar cuidadosamente todas as entradas de dados recebidas pelo software a fim de garantir que elas estejam corretas, dentro dos limites esperados e claro, seguras.

#### Tratamento de erros

Quando um erro ocorre é importante que o software seja capaz de identificar e, se possível, se recuperar daquela situação. Por isso, é interessante implementar mecanismos adequados para lidar com esses erros de forma apropriada para aquela situação.

Alguns exemplos são a captura de exceções (que veremos em um próximo tópico), o registro de logs de erros e a adoção de estratégias de recuperação, que são muito úteis para depuração, monitoramento e análise.

#### Uso de assertions

Essa é uma prática muito útil para validar suposições e condições durante a execução do código. As assertions tem a função de verificar se uma determinada condição é verdadeira. Se não, uma exceção é lançada, indicando uma violação na suposição feita.

Com a utilização das assertions, os problemas e erros são identificados de uma forma mais rápida, durante o desenvolvimento e o teste do software. A ideia é sempre encontrar bugs e problemas logo no início, facilitando a depuração e a correção.

#### Tratamento de exceções

Utilizar exceções é uma técnica muito utilizada pelos desenvolvedores para tratar erros. Ela é uma indicação de um problema que ocorreu durante a execução do código: um erro ocorre e assim uma exceção é lançada. Com isso, o fluxo do software é interrompido, transferindo o controle para um bloco de código especializado para tratamento dessa exceção. Assim, conseguimos fazer com o que nosso código capture informações sobre o erro e tome as medidas necessárias.

Um exemplo é utilizar blocos try-catch para capturar e tratar essas exceções, para que assim possam nos fornecer mensagens de erro para facilitar a depuração e resolução de problemas.

#### Documentação clara

Para facilitar o entendimento e uso correto do software por parte de outros desenvolvedores ou até mesmo para quem produziu poder consultar quando necessário, é importante ter uma documentação clara do software. Com isso, as pessoas poderão entender como o código foi projetado e com a descrição das medidas defensivas que foram adotadas (se tiver exemplos melhor ainda).

Além disso, conforme o código for evoluindo, é importante ir atualizando esse documento, como por exemplo quando é implementada uma nova medida defensiva ou qualquer outra alteração feita no código.

#### Testes abrangentes

Isso inclui todos os tipos de testes que são projetados para validar algo no software, como por exemplo o teste de unidade, integração, etc.

Para a programação defensiva, é importante que todas as medidas defensivas que foram implementadas no software sejam testadas para garantir a sua eficácia. Esses testes também nos auxiliam a garantir a confiabilidade e qualidade do software.

### Concluindo…

A programação defensiva tem vários benefícios, mas vale deixar claro que essa técnica não deve ser utilizada em excesso. Deve-se encontrar um ponto de equilíbrio entre o que deve ser protegido versus o tempo x dinheiro que será investido nisso.

Em alguns cenários, é recomendado questionar se sua utilização é realmente recomendada. Como por exemplo, investir tempo em uma proteção de um erro que provavelmente nunca será encontrado. Mas isso não quer dizer que você não possa utilizá-la nos casos que você sabe que pode dar algum problema. Basta usar com moderação e com real necessidade.

 [ ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/06/sessao-mentoria.jpg) ](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?forma=cartao)

- [ #Software ](https://www.treinaweb.com.br/blog/tag/software)
- [ #Programação ](https://www.treinaweb.com.br/blog/tag/programacao)
- [ #código ](https://www.treinaweb.com.br/blog/tag/codigo)
- [ #defensiva ](https://www.treinaweb.com.br/blog/tag/defensiva)

Autor

 ![Marylene Guedes](//secure.gravatar.com/avatar/5b0ba52b3705f298802db58782656bbc?d=mm)

## Marylene Guedes

 Responsável pelo sucesso do cliente na TreinaWeb. Graduada em Gestão de Tecnologia da Informação pela FATEC Guaratinguetá, além de estudante de UX/UI. 

 [Todos os artigos](https://www.treinaweb.com.br/blog/autor/marylene-guedes)  

## Continue estudando

 Transforme leitura em prática com os cursos e formações da TreinaWeb.

 [Ver cursos](https://www.treinaweb.com.br/cursos)   

  Continue lendo

## Artigos relacionados

- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/06/28145950/security-csrf-400x280.jpg)  [ Segurança da Informação ](https://www.treinaweb.com.br/blog/categoria/seguranca-da-informacao) 

     9 anos atrás

    ##  [ Cross-Site Request Forgery (CSRF) e abordagens para mitigá-lo ](https://www.treinaweb.com.br/blog/cross-site-request-forgery-csrf-e-abordagens-para-mitiga-lo) 

     Entenda o que é Cross-Site Request Forgery (CSRF) e conheça abordagens para mitigá-lo, incluindo a mais moderna delas, que é o atributo SameSite para cookies.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/02/17151508/php-elefante-ponte-400x280.png)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     7 anos atrás

    ##  [ Tipos no PHP ](https://www.treinaweb.com.br/blog/tipos-no-php) 

     Nesse post explicamos com exemplos tudo o que você precisa saber sobre definição de tipos em parâmetros e retornos de funções e métodos no PHP, além do novo recurso de propriedades de classes tipadas do PHP 7.4.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/05/spring-framework-400x280.png)  [ Java ](https://www.treinaweb.com.br/blog/categoria/java) 

     6 anos atrás

    ##  [ O que é Spring Framework? ](https://www.treinaweb.com.br/blog/o-que-e-spring-framework) 

     Confira neste artigo o Spring framework: um ecossistema de desenvolvimento para facilitar a criação de aplicações Java.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/03/o-que-e-programacao-reativa-400x280.png)  [ Arquitetura de Software ](https://www.treinaweb.com.br/blog/categoria/arquitetura-de-software) 

     6 anos atrás

    ##  [ O que é programação reativa? ](https://www.treinaweb.com.br/blog/o-que-e-programacao-reativa) 

     Confira neste artigo o que vem a ser programação reativa, um princípio de desenvolvimento de software que vem ganhando espaço entre os desenvolvedores.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/06/11140050/sockets-redes-tcp-udp-400x280.png)  [ PHP ](https://www.treinaweb.com.br/blog/categoria/php) 

     8 anos atrás

    ##  [ Programação de Sockets em PHP ](https://www.treinaweb.com.br/blog/programacao-de-sockets-em-php) 

     Neste artigo veremos uma introdução à programação de sockets com o PHP.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/07/DICA-CODIGO-JAVA-1-400x280.jpg)  [ Java ](https://www.treinaweb.com.br/blog/categoria/java) 

     3 anos atrás

    ##  [ Dica de Código: Programação Assíncrona com CompletableFuture no Java ](https://www.treinaweb.com.br/blog/dica-de-codigo-programacao-assincrona-com-completablefuture-no-java) 

     Domine a programação assíncrona com CompletableFuture no Java e impulsione o desempenho de sua aplicação. Leia agora!

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2023/03/dicionario-programador-iniciante-400x280.png)  [ Carreira ](https://www.treinaweb.com.br/blog/categoria/carreira) 

     4 anos atrás

    ##  [ Dicionário básico para quem está iniciando na programação ](https://www.treinaweb.com.br/blog/dicionario-basico-para-quem-esta-iniciando-na-programacao) 

     Você está iniciando na programação e está perdido nos termos e siglas que você lê ou ouve falar por aí? Confira neste artigo um guia rápido para você começar a se familiarizar com esse universo da TI.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/02/08152320/melhorar-perfil-desenvolvedor-400x280.png)  [ Carreira ](https://www.treinaweb.com.br/blog/categoria/carreira) 

     5 anos atrás

    ##  [ 3 linguagens de programação em alta em 2021 ](https://www.treinaweb.com.br/blog/3-linguagens-de-programacao-em-alta-em-2021) 

     Veja neste artigo três linguagens de programação em alta em 2021.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/01/GUIA-INTRODUÇÃO-PROGRAMAÇÃO-400x280.png)  [ Algoritmos ](https://www.treinaweb.com.br/blog/categoria/algoritmos) 

     6 anos atrás

    ##  [ Guia de introdução à programação ](https://www.treinaweb.com.br/blog/guia-de-introducao-a-programacao) 

     Entenda os conceitos fundamentais para iniciar seus estudos na área de desenvolvimento neste guia de introdução a programação.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/01/operadores-matematicos-usados-na-programacao-400x280.png)  [ Algoritmos ](https://www.treinaweb.com.br/blog/categoria/algoritmos) 

     6 anos atrás

    ##  [ Operadores matemáticos usados na programação ](https://www.treinaweb.com.br/blog/operadores-matematicos-usados-na-programacao) 

     Conheça os operadores matemáticos mais utilizados nas linguagens de programação e saiba como utilizá-los.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/11/OPERADORES-COMPARAÇÃO-400x280.png)  [ Algoritmos ](https://www.treinaweb.com.br/blog/categoria/algoritmos) 

     6 anos atrás

    ##  [ Operadores de comparação na programação ](https://www.treinaweb.com.br/blog/operadores-de-comparacao-na-programacao) 

     Vamos aprender a utilizar os operadores de comparação mais comuns na lógica de programação.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/11/VARIÁVEIS-CONSTANTES-400x280.png)  [ Algoritmos ](https://www.treinaweb.com.br/blog/categoria/algoritmos) 

     6 anos atrás

    ##  [ Variáveis e constantes na programação ](https://www.treinaweb.com.br/blog/variaveis-e-constantes-na-programacao) 

     Variáveis e Constantes são conceitos fundamentais para o estudo de lógica de programação, vamos entender qual a utilidade de cada uma.

     Ler artigo

## Um ano de acesso total para você viver de programação.

 Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro `console.log` ao mercado de trabalho.

- **1 ano** de acesso a **todos os cursos**
- Cursos novos **toda semana**
- Suporte **direto com professores**
- Plano de carreira **personalizado**
- **Certificados digitais** inclusos
- **Aplicativos** para Android e iOS, com **acesso offline**

    **Garantia incondicional de satisfação** 

 Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

### Acesso completo a todos os cursos e dezenas de Formações.

 12 meses 

  Economize R$ 840,00  54% OFF 

 de 12x R$ 129,00 por apenas

 12x  R$ 59,00

 sem juros no cartão de crédito ou R$ 599,00 à vista

  Oferta termina em  **22h 14min 18s**

- Acesso imediato e ilimitado durante 1 ano.
- Plano de carreira personalizado.
- Suporte direto com professores.
- E muito mais!

 [Matricule-se agora](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26)

     [                ](https://www.treinaweb.com.br)

 Escola online de programação, tecnologia e IA.

- [  ](https://www.facebook.com/TreinaWeb/)
- [  ](https://www.instagram.com/treinaweb/)
- [  ](https://www.youtube.com/user/TreinaWeb)
- [  ](https://twitter.com/treinaweb)
- [  ](https://www.linkedin.com/company/treinaweb)
- [  ](https://github.com/treinaweb)

## Inscreva-se em nossa newsletter

Receba lançamentos, promoções e novidades.

   Seu nome     Seu WhatsApp     Seu melhor e-mail   Inscrever-se 

## Cursos

- [ Base para Devs ](https://www.treinaweb.com.br/categoria/base-para-devs)
- [ Front-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-front-end)
- [ Back-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-back-end)
- [ Mobile ](https://www.treinaweb.com.br/categoria/desenvolvimento-mobile)
- [ Bancos de Dados ](https://www.treinaweb.com.br/categoria/bancos-de-dados)
- [ Cloud ](https://www.treinaweb.com.br/categoria/cloud-computing)
- [ IA ](https://www.treinaweb.com.br/categoria/ia)
- [ E mais ](https://www.treinaweb.com.br/categoria/e-mais)
- [ Ver todos os cursos ](https://www.treinaweb.com.br/cursos)

## Conteúdo

- [ Formações ](https://www.treinaweb.com.br/formacoes)
- [ Projetos práticos ](https://www.treinaweb.com.br/projetos-praticos)
- [ Direto ao ponto ](https://www.treinaweb.com.br/direto-ao-ponto)
- [ Planos ](https://www.treinaweb.com.br#assinatura)
- [ Depoimentos ](https://www.treinaweb.com.br#depoimentos)
- [ Comunidade ](https://www.treinaweb.com.br#comunidade)
- [ Corpo docente ](https://www.treinaweb.com.br#docente)

## A empresa

- [ Sobre a TreinaWeb ](https://www.treinaweb.com.br#sobre)
- [ Perguntas frequentes ](https://www.treinaweb.com.br#faq)
- [ Vantagens de estudar na TreinaWeb ](https://www.treinaweb.com.br/vantagens-de-estudar-na-treinaweb)
- [ Cursos para empresas ](https://www.treinaweb.com.br/empresas)
- [ Sugira um novo curso ](https://www.treinaweb.com.br/sugerir-curso)
- [ Trabalhe conosco ](https://www.treinaweb.com.br/trabalhe-conosco)
- [ Artigos ](https://www.treinaweb.com.br/blog)
- [ Desenvolvedores e agentes ](https://www.treinaweb.com.br/developers)
- [ Contato ](https://www.treinaweb.com.br/contato)
- [ Política de privacidade ](https://www.treinaweb.com.br/politica-de-privacidade)
- [ Termos de uso ](https://www.treinaweb.com.br/termos-de-uso)

## Baixe nosso aplicativo

 [   Disponível na **App Store**  ](https://apps.apple.com/us/app/treinaweb/id1322729447) [   Disponível no **Google Play**  ](https://play.google.com/store/apps/details?id=br.com.treinaweb.mobile) 

  Av. Paulista, 1765, Conj 71 e 72 · Bela Vista · São Paulo · SP · 01311-200   © 2004 – 2026 TreinaWeb Tecnologia LTDA · CNPJ 06.156.637/0001-58
