全部产品
Search
文档中心

Alibaba Cloud SDK:Penanganan pengecualian

更新时间:Jun 28, 2025

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.

Penting

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)
    }
}