gobuch/best-practices/error-behaviour/main.go
2020-08-21 06:26:40 +02:00

35 lines
438 B
Go

package main
import (
"log"
"net"
)
func isTimeout(err error) bool {
type timeout interface {
Timeout() bool
}
v, ok := err.(timeout)
if !ok {
return false
}
return v.Timeout()
}
func main() {
err := callRemoteService()
if nerr, ok := err.(net.Error); ok && nerr.Timeout() {
//nochmal versuchen
log.Printf("it's a unknown network error: %v\n", nerr)
}
if err != nil && !isTimeout(err) {
log.Fatal(err)
}
}