Tratamento de Erros em Go

Jul 13, 2016 00:00 · 248 words · 2 minute read Desenvolvimento GO Ferramentas

by Elton Minetto

Um dos primeiros pontos que causam estranheza para quem está começando em Go é a forma como os erros são tratados, principalmente quando viemos de outras linguagens orientadas a objetos. Em Go os erros são “first class citizens”, ou seja, eles não são ocultos ou delegados e são considerados parte importante do código.

Hoje passei por uma situação onde isso fez diferença. Revisando/debugando o código em PHP (alterado do original):

Assume-se que o $response, por exemplo, deve retornar um valor correto, que qualquer erro seria tratado pelo método transmit e exceptions seriam geradas caso contrário.

Em Go o mesmo código poderia ser escrito da seguinte forma:

Como todo método pode retornar dois resultados, um de sucesso e outro de erro, podemos capturar e tratar o problema explicitamente.

A primeira impressão é que o código está mais burocrático e ferindo algum princípio como os defendidos pelo SOLID, mas o erro e seu tratamento está bem mais claro. E em uma linguagem de programação que tem como foco o desenvolvimento de aplicativos concorrentes isso pode ser uma grande vantagem.

Também é possível ignorar o erro usando:

E desta forma estamos delegando o controle para o método transmit, como no exemplo em PHP.

A “moral da história” aqui é entender as vantagens e desvantagens de cada abordagem para podermos escolher a melhor forma para implementá-la em nossos projetos.

Mais detalhes sobre o tratamento de erros em Go pode ser vista no blog oficial

Originally published at eltonminetto.net on July 14, 2016.

tweet Share