http.Get(url)을 호출하는 동안 오류가 발생하면 응답 개체를 닫아야 합니까?
http.Get을 호출할 때 (url) 요청 중에 오류가 발생하는 시나리오가 발생할 수 있습니다. 이러한 경우 다음과 같은 질문이 생깁니다. 응답 객체를 닫는 것이 필수입니까?
답변:
일반 프로그래밍 원칙에 따르면 함수가 여러 값을 반환하는 경우 , 오류를 포함하여 오류 값을 먼저 검사해야 합니다. 오류(err != nil)가 있는 경우 적절한 조치를 취해야 하며, err 값이 nil인 경우에만 진행해야 합니다.
http.Get()의 경우 이 개념을 따릅니다. 오류가 발생하면 다음과 같이 nil 응답을 반환합니다.
return nil, someError
따라서 다음과 같이 처리해야 합니다.
res, err := http.Get(url) if err != nil { log.Printf("Error: %s\n", err) return } defer res.Body.Close() // Read/work with body
오류가 발생하고 리디렉션 실패로 인해 nil이 아닌 응답이 반환되었더라도 여전히 응답 본문을 닫을 필요가 없습니다. 그러나 그렇게 하려고 한다면 다음과 같은 조건부 검사를 사용할 수 있습니다.
if res != nil { defer res.Body.Close() }
http.Response 문서에서는 응답 데이터의 유무에 관계없이 Body 속성이 절대 nil이 되지 않도록 보장합니다. .
위 내용은 `http.Get()` 오류가 발생한 후 HTTP 응답 개체를 닫아야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!