Veja:
- https://pt.stackoverflow.com/q/20660/101
- https://pt.stackoverflow.com/a/56299/101
- https://pt.stackoverflow.com/q/15261/101
- https://pt.stackoverflow.com/a/17632/101
- https://pt.stackoverflow.com/a/141908/101
- https://pt.stackoverflow.com/a/30168/101
- https://pt.stackoverflow.com/a/13611/101
goto
não tem nada de pré-histórico e tem sua serventia. para quem sabe usar. O uso errado não invalida a ferramenta. E as pessoas usam ele o tempo todo com break
e continue
, nem vou falar com throw
porque é o pior tipo de goto
que existe, é um que sais da unidade de execução e vai para um lugar que você nem imagina qual é.
Exceção é um mecanismo errado e as linguagens mais modernas não adotam mais isso.
Então usamos por modinha, ou seja, porque todo mundo usa. E faz algum sentido, porque se a cultura de bibliotecas e frameworks e até códigos abertos de projetos usam exceções, e muitas vezes a linguagem não tem um mecanismo melhor, então é ela que devemos usar.
Ela em si nem é tão problemática se for usada para o que é mais que excepcional, ou seja, erro de programação. Se usar para mais uma coisa e for os casos de falhas que só podem ser percebidas em tempo de execução e tem como se recuperar disso, então é ok.
Mesmo isso em muitas linguagens é ter muitas exceções e poucas capturas. Embora difícil, o ideal seria ter apenas um try-catch
. Vai com o mínimo possível.
Tem linguagens que só te dão essa opção para saber se algo falhou, então vai, e diga que não está sentindo falta de algo melhor.
Aproveito para mandar mais esta: https://pt.stackoverflow.com/q/441073/101, já que falou do assunto. Então talvez o erro já esteja aí, aí sai tudo errado. Hoje que mais se fala e se inventa de técnica ou tecnologia nova é para consertar alguma coisa errada que as pessoas começaram fazer e achavam uma boa ideia, em vez de consertar o erro original.
Por que o domínio não pode ter validação? E por que a validação tem que gerar uma exceção? Talvez aqui https://pt.stackoverflow.com/q/16089/101 explique melhor como uma API pode ser interessante de gerar uma exceção ou apenas indicar que não deu o resultado esperado.
Se você ler com atenção os links que passei dá uma ideia mais aprofundada.
S2
Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente (não vendo nada, é retribuição na minha aposentadoria) (links aqui no perfil também).