Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 如何在GoLang中显式捕获错误_Amazon Web Services_Go - Fatal编程技术网

Amazon web services 如何在GoLang中显式捕获错误

Amazon web services 如何在GoLang中显式捕获错误,amazon-web-services,go,Amazon Web Services,Go,我需要知道如何显式捕获某个错误(异常) 这是我的密码: package main import ( "bufio" "bytes" "compress/gzip" "fmt" "io/ioutil" "log" "os" "path" "strings" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/session"

我需要知道如何显式捕获某个错误(异常)

这是我的密码:

package main

import (
    "bufio"
    "bytes"
    "compress/gzip"
    "fmt"
    "io/ioutil"
    "log"
    "os"
    "path"
    "strings"

    "github.com/aws/aws-sdk-go/aws"
    "github.com/aws/aws-sdk-go/aws/session"
    "github.com/aws/aws-sdk-go/service/secretsmanager"
)

func main() {
svc := secretsmanager.New(session.New())

result, err := svc.CreateSecret(inputCert)
            if err != nil {
                fmt.Println(err) //this gives the error "ResourceExistsException"
            }
            fmt.Println(result)
}

我得到的例外是ResourceExistsException。整个输出是:

ResourceExistsException:操作失败,因为机密测试/nse/test.crt已存在

我想做的是,我想明确地得到这个异常,因为也可能有其他异常(除了ResourceExistsException)


如何执行此操作?

要处理aws API中的特定错误,可以检查返回的错误类型

result, err := svc.CreateSecret(inputCert)
if err != nil {
    switch terr := err.(type) {
    case *secretsmanager.ResourceNotFoundException:
        // use "terr" which will be a value of the *ResourceNotFoundException type.
    default:
        fmt.Println("unhandled error of type %T: %s", err, err)
    }
}

我在这里使用了一个开关,因为您可能想检查几种不同的错误类型,但是如果只有一种错误类型,您可以使用一个简单的类型断言。

Go(如果语言是正确的名称)没有异常。(它有恐慌,但您的案例不是恐慌,而是返回的错误)。当你说“我想得到这个例外”时,你的确切意思是什么?没有异常,您可以根据需要处理返回的错误。这不是异常(Golang没有异常,它不是Java)。您的代码只是打印错误。@Volker我需要做的是检查返回的错误是否等于
ResourceExistsException
Go没有异常,并且无法“捕获”任何内容。但如果您的意思是“如何确定错误值是否表示特定错误?”则请参见重复链接。如果你的意思是别的,你必须澄清。