With error in A (try it on The Go Playground), output:
LoadModelA
2009/11/10 23:00:00 LogError
2009/11/10 23:00:00 Error LoadModelB
With error in B (try it on The Go Playground), output:
LoadModelA
LoadModelB
2009/11/10 23:00:00 LogError
2009/11/10 23:00:00 Error LoadModelB
Without error (try it onThe Go Playground), output:
LoadModelA
LoadModelB
Done.
main Done.
Here is the code:
package main
import (
"fmt"
"log"
)
func (worker *Worker) GetData() error {
if err := worker.LoadModelA(); err != nil {
worker.LogError()
return err
}
if err := worker.LoadModelB(); err != nil {
worker.LogError()
return err
}
fmt.Println("Done.")
return nil
}
func main() {
w := &Worker{}
err := w.GetData()
if err != nil {
log.Fatal(err)
}
fmt.Println("main Done.")
}
type Worker struct{}
func (w *Worker) LoadModelA() error {
fmt.Println("LoadModelA")
return nil
//return fmt.Errorf("Error LoadModelB")
}
func (w *Worker) LoadModelB() error {
fmt.Println("LoadModelB")
return nil
//return fmt.Errorf("Error LoadModelB")
}
func (w *Worker) LogError() error {
log.Println("LogError")
return nil
}