Topik ini menjelaskan jenis-jenis pengecualian dari Alibaba Cloud Darabonba SDK untuk Go dan cara menanganinya.
Pengecualian yang mungkin terjadi saat menggunakan Alibaba Cloud Darabonba SDK untuk Go dikategorikan sebagai berikut:
error: Jenis pengecualian ini disebabkan oleh kesalahan non-bisnis. Contohnya, jika verifikasi gagal karena file sumber SDK dimodifikasi atau penguraian tidak berhasil, jenis pengecualian ini akan dilemparkan.
SDKError: Jenis pengecualian ini disebabkan oleh kesalahan bisnis. Tiga parameter berikut digunakan untuk menangani jenis pengecualian ini:
Code: Kode kesalahan yang dikembalikan saat pengecualian terjadi.
Message: Pesan kesalahan yang dikembalikan saat pengecualian terjadi. Pesan ini mencakup ID permintaan API tempat pengecualian dilemparkan.
Data: Informasi kesalahan rinci yang dikembalikan oleh server untuk pengecualian tersebut.
Pastikan bahwa SDK yang Anda gunakan adalah versi terbaru.
github.com/alibabacloud-go/darabonba-openapi/v2
github.com/alibabacloud-go/tea-utils/v2
github.com/alibabacloud-go/tea
github.com/alibabacloud-go/vpc-20160428/v6
package main
import (
"fmt"
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
ecs20160428 "github.com/alibabacloud-go/ecs-20140526/v4/client"
util "github.com/alibabacloud-go/tea-utils/v2/service"
"github.com/alibabacloud-go/tea/tea"
"os"
)
/**
* Gunakan ID AccessKey dan Rahasia AccessKey Anda untuk menginisialisasi klien.
* @param accessKeyId
* @param accessKeySecret
* @return Client
* @throws Exception
*/
func createClient() (_result *ecs20160428.Client, _err error) {
config := &openapi.Config{
// Diperlukan. Pastikan variabel lingkungan berikut diatur dalam lingkungan runtime kode: ALIBABA_CLOUD_ACCESS_KEY_ID.
AccessKeyId: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_ID")),
// Diperlukan. Pastikan variabel lingkungan berikut diatur dalam lingkungan runtime kode: ALIBABA_CLOUD_ACCESS_KEY_SECRET.
AccessKeySecret: tea.String(os.Getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET")),
}
config.RegionId = tea.String("<regionId>")
_result = &ecs20160428.Client{}
_result, _err = ecs20160428.NewClient(config)
return _result, _err
}
func main() {
client, _err := createClient()
if _err != nil {
fmt.Printf("Kesalahan membuat klien: %v\n", _err)
return
}
describeRegionsRequest := &ecs20160428.DescribeRegionsRequest{}
resp, tryErr := func() (_result *ecs20160428.DescribeRegionsResponse, _e error) {
defer func() {
if r := tea.Recover(recover()); r != nil {
_e = r
}
}()
_result, _err = client.DescribeRegionsWithOptions(describeRegionsRequest, &util.RuntimeOptions{})
if _err != nil {
return nil, _err
}
return _result, nil
}()
if tryErr != nil {
if sdkError, ok := tryErr.(*tea.SDKError); ok { // Tentukan apakah tipe kesalahan tryErr adalah *tea.SDKError berdasarkan deskripsi kesalahan.
fmt.Println(tea.StringValue(sdkError.Message))
fmt.Println(tea.StringValue(sdkError.Code))
fmt.Println(tea.StringValue(sdkError.Data))
} else {
fmt.Println(tea.String(tryErr.Error()))
}
} else {
fmt.Println(resp.Body)
}
}