대부분의 오류 처리 오류는 스택 오류를 전달하는 것으로 볼 수 있습니다. 어느 시점에서 이것들은 해석이 필요하며 이것은 내가하려고하는 것입니다. 여기 내 시도의 조각입니다 : 이것은 내 현재 사건에 대한하지만 작동하지 않습니다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 문은 매번 오류 텍스트가 바뀌고 catch 할 수있는 명시적인 값이 없기 때문에이 오류를 잡을 수 있습니다 (URL이 항상 변경됨). 이제는 case 문에서 정규 표현식 일치를 수행 할 수 있습니다. 하위 슬라이스 오류 문자열,하지만이 문제를 해결할 수있는 아주 나쁜 방법을 느낀다.
제안 사항이 있으십니까? 이 같은 오류를 잡는 관용적 인 방법이 틀림없이 있어야합니까?
철저한 답변 주셔서 감사합니다! 문제는 내가 표준 HTML 패키지 인 frm을 얻는 중 오류가 일치하는 오류 정의를 제공하지 않는다고 생각합니다. 하지만 오류 유형에 대해 먼저 전환 한 다음 나중에 오류 세부 정보로 전환 할 수 있다는 것이 맞습니다. 이 응용 프로그램으로 충분할 것입니다. 이제이 요청을 표준 HTML 패키지로 다시 공급하는 방법을 알아야합니다. 감사합니다. –