2

Minha maior decepção com JavaScript é nunca saber pela assinatura de uma função ou método que tipo de exceções ele pode gerar. É quase uma certeza que os programadores vão construir programas intolerantes a falhas.

Você tá vindo do Java, né?

Qual outra linguagem de programação além do Java que você conhece que declara os tipos de exceções na assinatura do método? Se não me engano, das linguagens populares tem o Swift e Scala, Kotlin só mantém por exigência da JVM.

Ainda pode dizer que Go e Rust declaram os tipos de erros na assinatura, mas isso é possível fazer com Either Pattern em quase qualquer linguagem moderna, inclusive JS.


Tenha em mente que JS não foi criado para usar como temos usado nos últimos anos, ela foi feita às pressas pelo pessoal do Netscape na época da guerra dos browsers e da bolha PONTOCOM, não houve tempo e dedicação para ser uma linguagem de uso geral.

Ela precisava ser executada no navegador e uma falha de programação não poderia simplesmente gerar um erro na cara do usuário, a página deveria continuar sendo renderizada e o máximo funcional possível.

Para cobrir essas inabilidades é que iniciativas como TypeScript fazem tanto sentido.

Mesmo que o JS tenha recebido muitas melhorias, certos comportamentos não podem simplesmente mudar, pois isso poderia quebrar boa parte das aplicações web e sites pelo mundo. Se quiser impedir sua aplicação de lançar uma string como erro, você pode configurar seu ESLint ou similar para isso e resolver em tempo de projeto.

Carregando publicação patrocinada...
1

Falaa amigo! Obrigado pelo comentário. Na verdade eu venho do JS, trabalho há alguns anos já. Estou estudando muito o Java agora na faculdade e gostei demais dessas pequenas (e úteis) diferenças. E sim, eu entendo o porquê ser assim. Só não entendo como nada foi realizado nesse sentido, nem o próprio TS ajuda no tratamento de exceções, na verdade ele traz funções básicas que o JS nasceu sem. O post foi pra instigar mesmo, e fazer quem tá entrando na área agora entender as deficiências da linguagem e que existem outras abordagens por aí. Nesse sentido, seu comentário foi bastante agregador. Muito obrigado.

Abraços