Dunaevlad
@Dunaevlad

Как продолжить выполнение программы при возникновении ошибки?

func GetRequest(client *http.Client, method, url string) []byte {

	// request
	req, err := http.NewRequest(method, url, nil)
	if err != nil {
		log.Println("Error Occurred.", err)
	}
	response, err := client.Do(req)
	if err != nil {
		log.Println("Error sending request to API endpoint.", err)
	}
	// Close the connection to reuse it
	defer response.Body.Close()

	body, err := ioutil.ReadAll(response.Body)}
	return body
}


Данная функция работает в цикле, соотвественно, программа падает, если возникает ошибка при отправке запроса и получении ответа, можно как то сделать try, cath в go?
  • Вопрос задан
  • 160 просмотров
Решения вопроса 2
kvaks
@kvaks
падает скорей все при закрытие тела запроса (которого нет при ошибке),

func GetRequest(client *http.Client, method, url string) (body []byte, err error) {
// request
req, err := http.NewRequest(method, url, nil)
if err != nil {
log.Println("Error Occurred.", err)
return
}
response, err := client.Do(req)
if err != nil {
log.Println("Error sending request to API endpoint.", err)
return
}
// Close the connection to reuse it
defer response.Body.Close()

body, err = ioutil.ReadAll(response.Body)
return
}
Ответ написан
@12rbah
if err != nil {
    log.Println("Error sending request to API endpoint.", err)
  }

В вашем случае не нужен try catch, у вас проблема с тем, что при возникновении ошибки вы продолжаете выполнять код, а должны вернуться из тела функции и вернуть ошибку. Но если нужны механизмы типа try catch то гуглите panic/recover
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы