Javascript

Try/Catch: Origem, Propósito e o Erro de Usá-lo como Fluxo Lógico

tratamento de erros exceções javascript typescript rust clojure boas práticas c++
Entenda quando, por que e para que o try/catch foi criado, e por que ele não deve ser usado como controle de fluxo lógico.

O tratamento de exceções surgiu para separar o fluxo normal do programa do tratamento de situações inesperadas, como falhas de hardware ou erros de entrada/saída. Inicialmente, programas usavam códigos de retorno para lidar com erros, mas isso era propenso a falhas e difícil de manter.

O modelo try/catch foi evoluindo desde os anos 60, ganhando formas mais estruturadas em linguagens como PL/I, Ada, C++ e Java, e depois sendo adotado por outras como JavaScript.

O objetivo sempre foi permitir que programas lidassem de forma controlada com erros imprevisíveis, sem travar o sistema. As exceções não foram criadas para controlar o fluxo normal do programa, mas sim para tratar casos realmente excepcionais. Neste artigo, vamos ver por que usar try/catch como controle de fluxo é um erro e qual é o seu propósito real.

Leia mais →

Tratamento Funcional de Erros em TypeScript

javascript typescript fp-ts programação funcional tratamento de erros desenvolvimento
Usando fp-ts para gerenciar erros de forma robusta e tipada

Neste artigo, vamos explorar uma abordagem mais estruturada para o tratamento de erros em TypeScript usando conceitos de programação funcional. A biblioteca fp-ts (Functional Programming em TypeScript) oferece ferramentas que permitem lidar com falhas de forma explícita e type-safe, melhorando a robustez e legibilidade do código. Existem também outras bibliotecas com abordagens semelhantes ou complementares no ecossistema TypeScript:

  • Purify-ts: Uma alternativa mais leve ao fp-ts, focada em tipos como Maybe e Either
  • Neverthrow: Biblioteca especializada em tratamento de erros com Result/Either
  • Effect: O sucessor oficial e linha evolutiva do ecossistema fp-ts, oferecendo uma abordagem mais moderna para programação funcional com foco em concorrência, streaming e gerenciamento de recursos
  • Zio-ts: Inspirada na biblioteca ZIO de Scala (atualmente com desenvolvimento menos ativo)

Cada uma dessas bibliotecas tem seus pontos fortes. O fp-ts continua sendo uma escolha sólida pela sua maturidade e estabilidade, enquanto o Effect representa a evolução natural desses conceitos. Neste artigo, focaremos no fp-ts e em como ele aborda o tratamento de erros de forma funcional.

Leia mais →