日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

Go錯誤處理

本文介紹Go SDK的錯誤處理。

客戶端錯誤

Go SDK中調用出錯會統一返回error接口,該接口定義如下:

type error interface {
    Error() string
}

其它錯誤繼承該接口。比如HTTP錯誤請求返回的錯誤如下:

//net.Error 
type Error interface {
    error
    Timeout() bool   // Is the error a timeout
    Temporary() bool // Is the error temporary
}

服務器端錯誤

使用OSS Go SDK時如果請求出錯,會返回相應的error。HTTP請求、IO等錯誤會返回Go語言自定義錯誤。OSS Server處理請求出錯,則返回如下的錯誤,該錯誤實現了Error接口。

type ServiceError struct {
    Code       string    // OSS返回給用戶的錯誤碼
    Message    string    // OSS給出的詳細錯誤信息
    RequestId  string    // 用于唯一標識該次請求的UUID
    HostId     string    // 用于標識訪問的OSS集群
    StatusCode int       // HTTP狀態碼
}

如果OSS返回的HTTP狀態碼與預期不符,則返回如下錯誤,該錯誤也實現了Error接口。

type UnexpectedStatusCodeError struct {
    allowed []int    // 預期OSS返回HTTP狀態碼
    got     int      // OSS實際返回HTTP狀態碼
}

錯誤處理示例

以下代碼用于展示錯誤處理:

package main

import (
	"fmt"
	"os"
	"strings"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

// 錯誤處理函數。
func HandleError(err error) {
	fmt.Println("Error:", err)
	os.Exit(-1)
}
func main() {
	/// 從環境變量中獲取訪問憑證。運行本代碼示例之前,請確保已設置環境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}

	// 創建OSSClient實例。
	// yourEndpoint填寫Bucket對應的Endpoint,以華東1(杭州)為例,填寫為https://oss-cn-hangzhou.aliyuncs.com。其它Region請按實際情況填寫。
	// yourRegion填寫Bucket所在地域,以華東1(杭州)為例,填寫為cn-hangzhou。其它Region請按實際情況填寫。
	clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
	clientOptions = append(clientOptions, oss.Region("yourRegion"))
	// 設置簽名版本
	clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
	client, err := oss.New("yourEndpoint", "", "", clientOptions...)
	if err != nil {
		HandleError(err)
	}
	// 填寫存儲空間名稱,例如examplebucket。
	bucketName := "examplebucket"
	// 填寫Object名稱,例如exampleobject.txt。
	objectName := "exampleobject.txt"

	bucket, err := client.Bucket(bucketName)
	if err != nil {
		HandleError(err)
	}
	// 上傳字符串。
	err = bucket.PutObject(objectName, strings.NewReader("Hello OSS"))
	if err != nil {
		HandleError(err)
	}
}

OSS錯誤碼

OSS錯誤碼列表如下:

錯誤碼

描述

HTTP狀態碼

AccessDenied

拒絕訪問

403

BucketAlreadyExists

Bucket已經存在

409

BucketNotEmpty

Bucket不為空

409

EntityTooLarge

實體過大

400

EntityTooSmall

實體過小

400

FileGroupTooLarge

文件組過大

400

InvalidLinkName

Object Link與指向的Object同名

400

LinkPartNotExist

Object Link中指向的Object不存在

400

ObjectLinkTooLarge

Object LinkObject個數過多

400

FieldItemTooLong

Post請求中表單域過大

400

FilePartInterity

文件Part已改變

400

FilePartNotExist

文件Part不存在

400

FilePartStale

文件Part過時

400

IncorrectNumberOfFilesInPOSTRequest

Post請求中文件個數非法

400

InvalidArgument

參數格式錯誤

400

InvalidAccessKeyId

AccessKeyId不存在

403

InvalidBucketName

無效的Bucket名稱

400

InvalidDigest

無效的摘要

400

InvalidEncryptionAlgorithmError

指定的熵編碼加密算法錯誤

400

InvalidObjectName

無效的Object名稱

400

InvalidPart

無效的Part

400

InvalidPartOrder

無效的Part順序

400

InvalidPolicyDocument

無效的Policy文檔

400

InvalidTargetBucketForLogging

Logging操作中有無效的目標Bucket

400

InternalError

OSS內部錯誤

500

MalformedXML

XML格式非法

400

MalformedPOSTRequest

Post請求的body格式非法

400

MaxPOSTPreDataLengthExceededError

Post請求上傳文件內容之外的body過大

400

MethodNotAllowed

不支持的方法

405

MissingArgument

缺少參數

411

MissingContentLength

缺少內容長度

411

NoSuchBucket

Bucket不存在

404

NoSuchKey

文件不存在

404

NoSuchUpload

Multipart Upload ID不存在

404

NotImplemented

無法處理的方法

501

PreconditionFailed

預處理錯誤

412

RequestTimeTooSkewed

客戶端本地時間和OSS服務器時間相差超過15分鐘

403

RequestTimeout

請求超時

400

RequestIsNotMultiPartContent

Post請求Content-Type非法

400

SignatureDoesNotMatch

簽名錯誤

403

TooManyBuckets

用戶的Bucket數目超過限制

400

InvalidEncryptionAlgorithmError

指定的熵編碼加密算法錯誤

400

說明

上表中的錯誤碼OssServiceError.Code,HTTP狀態碼OssServiceError.StatusCode。