Обработка ошибок функции на Go
Если обработчик сигнализирует об ошибке исполнения или загрузки функции на Go, среда выполнения автоматически перехватывает ошибку и возвращает в ответ JSON-документ, содержащий информацию о типе ошибки. Формат этого JSON-документа описан в разделе Вызов функции.
Также информация об ошибке записывается в журнал выполнения, который можно просмотреть с помощью CLI Yandex Cloud или консоли управления
Примеры обработки ошибки
Ситуация 1: пользовательский код выходит за пределы массива, ожидается panic
. В реальности обработчик перехватывает panic
автоматически, собирает информацию о нём воедино и формирует из неё JSON-документ, содержащий сообщение об ошибке (поле errorMessage
), тип ошибки (поле errorType
) и трассировку стекаstackTrace
).
Код функции:
package main
func Handler () (int, error) {
array := []int{1, 2, 3, 4, 5}
return array[15], nil
}
Возвращаемый JSON-документ:
{
"errorMessage": "user code execution causes panic: runtime error: index out of range [15] with length 5",
"errorType": "UserCodePanic",
"stackTrace": [
...
]
}
Ситуация 2: пользовательский код сигнализирует об ошибке путем возвращения её из функции. В этом случае обработчик перехватывает данную ошибку и формирует из неё JSON-документ, содержащий сообщение пользовательской ошибки (поле errorMessage
) и её тип (поле errorType
).
Код функции:
package main
import "fmt"
func Handler () (int, error) {
return 0, fmt.Errorf("an error")
}
Возвращаемый JSON-документ:
{
"errorMessage": "an error",
"errorType": "UserCodeError"
}