全部产品
Search
文档中心

Function Compute:Penanganan Kesalahan

更新时间:Jun 24, 2025

Topik ini menjelaskan cara menangani kesalahan dalam lingkungan runtime Go.

Jika terjadi kesalahan, header respons HTTP berisi X-Fc-Error-Type, seperti X-Fc-Error-Type: UnhandledInvocationError. Untuk informasi lebih lanjut tentang jenis kesalahan dari Function Compute, lihat Penanganan Kesalahan.

Function Compute dapat mengembalikan kesalahan dengan cara berikut:

  • Tentukan pesan kesalahan yang akan dikembalikan dalam fungsi penanganan. Contoh kode:
    package main
    
    import (
        "errors"
        "fmt"
    
        "github.com/aliyun/fc-runtime-go-sdk/fc"
    )
    
    func HandleRequest() error {
        fmt.Println("hello world")
        return errors.New("terjadi kesalahan")
    }
    
    func main() {
        fc.Start(HandleRequest)
    }

    Setelah fungsi dipanggil, respons berikut dikembalikan:

    {
      "errorMessage": "terjadi kesalahan!",
      "errorType": "errorString"
    }
  • Gunakan panic untuk mengembalikan pesan kesalahan. Contoh kode:
    package main
    
    import (
        "fmt"
    
        "github.com/aliyun/fc-runtime-go-sdk/fc"
    )
    
    func HandleRequest() error {
        fmt.Println("hello world")
        panic("Kesalahan: terjadi kesalahan")
        return nil
    }
    
    func main() {
        fc.Start(HandleRequest)
    }

    Setelah fungsi dipanggil, respons berikut dikembalikan. Dalam contoh ini, beberapa informasi stack dihilangkan.

    {
      errorMessage: 'Kesalahan: terjadi kesalahan',
      errorType: 'string',
      stackTrace: [
        {
          path: 'github.com/aliyun/fc-runtime-go-sdk/fc/errors.go',
          line: 39,
          label: 'fcPanicResponse'
        },
        {
          path: 'github.com/aliyun/fc-runtime-go-sdk/fc/function.go',
          line: 84,
          label: '(*Function).Invoke.func1'
        },
        ...
        ...
        ...
        { path: 'code/main.go', line: 22, label: 'main' },
        { path: 'runtime/proc.go', line: 255, label: 'main' },
        null
      ]
    }
  • Gunakan kode penanganan kesalahan seperti log.Fatal yang berisi os.Exit(1).
    null Kami menyarankan agar Anda tidak menggunakan metode ini. Jika Anda menggunakan metode ini, tidak ada pesan kesalahan atau informasi stack yang dikembalikan saat keluar.
    package main
    
    import (
        "fmt"
        "log"
    
        "github.com/aliyun/fc-runtime-go-sdk/fc"
    )
    
    func HandleRequest() error {
        fmt.Println("hello world")
        log.Fatal("terjadi kesalahan")
        return nil
    }
    
    func main() {
        fc.Start(HandleRequest)
    }

    Setelah fungsi dipanggil, respons berikut dikembalikan:

    {
      errorMessage: 'Proses keluar secara tak terduga sebelum menyelesaikan permintaan (durasi: 0ms, penggunaan memori maksimum: 8MB)'
    }