Error handling in Golang is unconventional when compared to the other programming languages such as Java, Python, etc. While this peculiarity may come off as intimidating for software developers, this can prove to be more efficient when learned rigorously.
From Gabriel Tanner’s (n.d.) blog, errors usually indicate an unwanted condition in your own application. When directory creations fail, these are represented using an error specified below.
To give a brief overview from Schurman’s (2022) explanation, Go’s error type is implemented using the built-in error interface type:
Generally speaking, errors in Go talks about anything that implements the Error () method. This then returns error messages as a string. Simple yet elegant.
When constructing errors, these are constructed immediately using Go’s built-in errors or fmt packages. An example is presented below using the errors package in returning a new error with a static error message:
At the same time, the fmt package could also be used in adding dynamic data to the error, like int, string, or another error. To exemplify:
The fmt.Errorf will prove to be handy when used to wrap another error with the %w format verb.
The types of error handling in Go come in more types and among them are: string-based errors, custom error with data, defer, panic, recover, expected errors, sentinel errors, wrapping errors, and many more.
Overall, this basically means that errors in Go are lightweight pieces of data that tend to implement the Error interface. The predefined errors will improve signaling, allowing us to check which error occurred. Finally, you can warp errors to add enough context to trace through function calls.
From the many sources that have discussed about the error handling in Golang, we can definitely say that Go’s error handling isn’t bad. It’s just peculiar and odd. David Nix even describes error handling in go as “elegant”, and we agree. While there is not a single perfect error handling in all the mentioned programming languages, Golang’s error handling will definitely be those that will spark curiosity and interest among software developers.
Got your opinion about Golang’s error handling? Comment down below!