goエラー処理のほとんどの例では、エラーをスタックに戻すだけです。ある時点では、これらは解釈が必要であり、これが私がやろうとしていることです。 ここに私の試みの抜粋です:これは私の現在のケースのためにかかわらず、機能していないGolangの解釈エラーコード
resp, err := http.Get(string(url))
defer out_count.Dec()
if err != nil {
switch err {
case http.ErrBodyReadAfterClose:
fmt.Println("Read after close error")
case http.ErrMissingFile:
fmt.Println("Missing File")
{some more cases here}
case io.EOF:
fmt.Println("EOF error found")
default:
fmt.Printf("Error type is %T\n", err)
panic(err)
}
return
が(} URLを削除するように編集:
ERROR: Failed to crawl "http://{removed URL}"
Error type is *url.Error
panic: Get http://{removed url}: EOF
goroutine 658 [running]:
runtime.panic(0x201868, 0x106352c0)
/usr/lib/go/src/pkg/runtime/panic.c:279 +0x1a0
github.com/cbehopkins/grab/grab.crawl(0x10606210, 0x27, 0x105184b0, 0x105184e0, 0x10500460)
私が取得する方法を把握することはできませんswitch文は、エラーのテキストが毎回変更され、私が捕まえることができる明示的な値がないので、このエラーをキャッチするようにしてください(URLが常に変わるので)case文で正規表現のマッチングを行うか、エラー文字列をサブスライスするが、これはこの問題を解決するための非常に悪い方法のように感じる。
提案がありますか?このようなエラーを確実に捕まえるには、慣用的な方法が必要ですか?
徹底的な答えをありがとう! 私は、問題は、私は標準的なHTMLパッケージを取得しているエラーは私が一致することができます定義これらのエラーを提供していないということだと思う。 しかし、誤りの種類を最初に、次にエラーの詳細については後で切り替えることができます。 これで十分ですが、この要求を標準のhtmlパッケージに戻す方法を理解する必要があります。 ありがとう –