What specifically do you want to handle about DNS errors ? If you have a set of possible dns names and you don't know if some of them are valid, you could use net.LookupHost to check which ones are valid before calling http.Get.
On Monday, 28 November 2016 22:44:37 UTC+11, mb.dha...@gmail.com wrote: > > But AFIU, err.Temporary() could be true for other kind of errors that > might happen, isn't that a problem if I only want to handle DNS errors? > > > On Friday, November 25, 2016 at 6:35:59 PM UTC+1, Victor Vrantchan wrote: >> >> In Go, you can check if a type satisfies a particular behavior by >> declaring an interface, and then checking if the type satisfies that >> interface. >> In your case, you can check if the error is `Temporrary()` or not. >> >> See this snippet as an example: https://I don't >> thinplay.golang.org/p/Ffyg61iDpB <https://play.golang.org/p/Ffyg61iDpB> >> >> I recommend >> https://dave.cheney.net/2016/04/27/dont-just-check-errors-handle-them-gracefully >> >> and.or the GopherCon talk https://www.youtube.com/watch?v=lsBF58Q-DnY by >> Dave Cheney for a more in-depth presentation of this idea. >> >> On Friday, November 25, 2016 at 12:00:06 PM UTC-5, mb.dha...@gmail.com >> wrote: >>> >>> This is a question about the net/http API, Googling was not very helpful. >>> >>> _, err := http.Get("https://random_non_existing_domain.com") >>> >>> >>> Following code will obviously fail, but how can I check if it failed >>> because of DNS error not because a billion other things that might have >>> gone wrong? >>> >>> I tried this, (mostly as a shot in the dark) >>> >>> if e, ok := err.(net.Error); ok { >>> fmt.Println("dial error", e.Temporary()) >>> } >>> if e, ok := err.(*net.AddrError); ok { >>> fmt.Println("addr rror", e.Temporary()) >>> } >>> if e, ok := err.(*net.DNSError); ok { >>> fmt.Println(e) >>> >>> and it seems to print >>> >>> dial error false >>> >>> Is there any easy way to do what I'm trying to achieve? >>> >>> - >>> dbalan >>> @notmycommit >>> >>> >>> -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.