Chapter 12. back on your feet: Recovering from Failure
Every program encounters errors. You should plan for them.
Sometimes handling an error can be as simple as reporting it and exiting the program. But other errors may require additional action. You may need to close opened files or network connections, or otherwise clean up, so your program doesn’t leave a mess behind. In this chapter, we’ll show you how to defer cleanup actions so they happen even when there’s an error. We’ll also show you how to make your program panic in those (rare) situations where it’s appropriate, and how to recover afterward.
Reading numbers from a file, revisited
We’ve talked about handling errors in Go quite a lot. But the techniques we’ve shown thus far don’t work in every situation. Let’s look at one such scenario.
We want to create a program, sum.go, that reads
float64 values from a text file, adds them all together, and prints their sum.
In Chapter 6 we created a
GetFloats function that opened a text file, converted each line of the file to a
float64 value, and returned those values as a slice.
Here, we’ve moved
GetFloats to the
main package and updated it to rely on two new functions,
CloseFile, to open and close the text file.
We want to specify the name of the file we’re ...