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没有异常,并且无法“捕获”任何内容。但如果您的意思是“如何确定错误值是否表示特定错误?”则请参见重复链接。如果你的意思是别的,你必须澄清。