Go's error handling emphasizes simplicity and explicitness.
This post explores its unique approach and compares it to other languages.
Agenda
- Why is it an interesting topic in GO?
- What do we have in different languages?
- It is why you can trust.
Why is it an interesting topic in GO?
I like having control over the processing of the source code; that code has a clear and structured flow, and it helps to read and understand the code and what's going on here. GO has it. And that's all that GO has. You are limited to processing it ONLY in this way. GO developers are discussing that it is a problem that you need to write each time mechanism to validate the error state and handle it on each layer of the process flow. And YES, it is noisy, I totally agree here. But when I saw this discussion, only one thing in my head. Did you try to debug the bug when you can't see where and who throws this exception? Yeah, it is the wrong implementation, but in my experience, I saw it very difficult to build such a process for all types of exceptions (we are back to tonnes of code, but in this case, this processor is doing more than it should).
What do we have in different languages?
.NET, Java, and JS have strong mechanisms to process errors it is the exception. So, you can control error processing by that. How? We have a "try, catch, and throw" mechanism or code flow to create and handle errors. So, if you want to create an error and notify the caller, then you can throw the exception. It can be a specific type of exception or a base exception with a specific error message. It is a powerful mechanism because you have control and flexibility. But, again, I saw examples where developers try to do that everywhere, for technical, business, and validation errors. I totally forgot about the performance, as well. Because exception processing is hard from the resource usage side. Catch exceptions can allocated in one place, you can miss something, and the code will have a "small."
It is why you can trust.
Evidence, evidence, and evidence. You can find the project and try it yourself and see the results. My GitHub repository with these testing with GO and .NET projects to compare results: https://github.com/kolomiietsmykola/ErrorHandleBenchmark
Outputs
Please share your comments or concerns about it in the comments!
Comments
Post a Comment