Function panic and recovery
Earlier in the chapter, it was stated that Go does not have the traditional exception mechanism offered by other languages. Nevertheless, in Go, there is a way to abruptly exit an executing function known as function panic. Conversely, when a program is panicking, Go provides a way of recovering and regaining control of the execution flow.
Function panic
During execution, a function may panic because of any one of following:
Explicitly calling the panic built-in function
Using a source code package that panics due to an abnormal state
Accessing a nil value or an out-of-bound array element
Concurrency deadlock
When a function panics, it aborts and executes its deferred calls. Then its caller panics, causing a chain reaction as illustrated in the following figure:
The panic sequence continues all the way up the call stack until the main
function is reached and the program exits (crashes). The following source code snippet shows a version of the anagram program that will...