Here’s an example of how to use recover() in Google Go.
package main
import "fmt"
func gandalf( doTalkTo bool ){
defer catch()
if(doTalkTo){
// Panic stops execution of the current function and stops unwinding the stack, calling an deferred functions along the way.
panic("You shall not pass!")
}
}
// catch() must be called as a deferred
func catch(){
// recover() regains control over the program execution when panic() is called.
// recover() returns is the argument passed from panic()
if r := recover(); r != nil {
fmt.Println("Error:", r)
} else {
fmt.Println("No problems occurred")
}
}
func main() {
gandalf(true)
gandalf(false)
//unwinds to the top of the stack and ends the program
panic("Where am I going?");
}
Output: Error: You shall not pass! No problems occurred panic: Where am I going? goroutine 1 [running]: main.main()
Demo: http://play.golang.org/p/xu9Jd1YI0T
More information here:
Effective Go - The Program Language
What REALLY is Data Science? Told by a Data Scientist - By Joma Tech
Writing perfect code is a challenging process. That's where code reviews come in to help…
"The Next Leap: How A.I. will change the 3D industry - Andrew Price - Blender"
"Captain Disillusion: World's Greatest Blenderer - Live at the Blender Conference 2018 - CaptainDisillusion"
My 5 Favorite Linux Shell Tricks for SPEEEEEED (and efficiency) - By tutoriaLinux > What's…