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

錯誤處理

本文介紹錯誤處理的基本概念和相關(guān)使用示例,通過重試機制及捕獲策略,幫助您輕松應(yīng)對常見錯誤,提升流程穩(wěn)定性。

基本概念

云工作流集成可能會產(chǎn)生一些預(yù)期或者非預(yù)期的錯誤,您可針對該場景選擇繼續(xù)進行該狀態(tài)的操作,或直接引導(dǎo)至下一個狀態(tài)。關(guān)鍵字FnF.ALL為特殊選項,該選項能夠捕捉所有錯誤。工作流錯誤處理包含兩部分內(nèi)容:錯誤重試(Retry)錯誤捕獲(Catch)。

支持錯誤處理的狀態(tài)類型

針對下面的狀態(tài)類型,狀態(tài)定義中支持Retry和Catch兩個字段,分別用于聲明錯誤重試和錯誤捕獲的策略,幫助處理狀態(tài)中發(fā)生的錯誤。

說明

在具體的錯誤處理中,總是按照先執(zhí)行Retry策略,如果Retry失敗,再執(zhí)行Catch策略的順序進行錯誤處理。

錯誤重試(Retry)

字段

類型

是否必選

描述

示例值

Errors

[]string

可以命中的錯誤列表,請參考常見錯誤類型。

-MyCustomError

-FnF.ALL

Description

string

控制臺中的策略名稱,也是對錯誤重試的描述。

重試策略 #1

MaxAttempts

int

表示最大重試次數(shù)。

3

IntervalSeconds

int

表示重試間隔時間,最大值是86400秒。單位:秒。

10

BackoffRate

float

表示下一次重試間隔時間是當前重試間隔時間的倍數(shù)。

2

MaxBackoffSeconds

int

表示運行的最大重試間隔時間,最大值是86400秒。單位:秒。

30

說明

錯誤重試規(guī)則中,如果用戶針對同一個錯誤類型定義了多個重試規(guī)則,在實際的錯誤重試中只會優(yōu)先按照匹配到的第一個規(guī)則進行錯誤重試。

錯誤捕獲(Catch)

字段

類型

是否必選

描述

示例值

Errors

[]string

可以命中的錯誤列表,請參考常見錯誤類型

-MyCustomError

-FnF.ALL

Description

string

控制臺中的策略名稱,也是對錯誤捕獲的描述。

錯誤捕獲規(guī)則 #1

OutputConstructor

map[string]any

輸出構(gòu)造器,與Next搭配使用。

請參見輸出構(gòu)造器

Next

string

捕獲到指定錯誤時,回退的狀態(tài)。

my-next-state

OutputConstructor與Next搭配使用,在流轉(zhuǎn)至其他狀態(tài)的場景下,本身沒有產(chǎn)生符合預(yù)期的輸出,即使流轉(zhuǎn)到下一個狀態(tài)也無法處理,因此,此處使用OutputConstructor可以直接構(gòu)造一個輸出,作為跳轉(zhuǎn)到目標狀態(tài)的輸入。

說明

錯誤/異常捕獲規(guī)則中,如果用戶針對同一個錯誤類型定義了多個錯誤捕獲規(guī)則,在實際的錯誤處理中只會優(yōu)先按照匹配到的第一個規(guī)則進行捕獲處理。

常見錯誤類型

當前常見錯誤類型主要以函數(shù)計算集成為示例,其它集成服務(wù)相關(guān)的錯誤類型請參考對應(yīng)的集成文檔說明。

錯誤類型

描述

FC.{ErrorCode}

函數(shù)計算服務(wù)返回除200的HTTP Code。常見的錯誤類型如下所示:

  • FC.ResourceThrottled:您的函數(shù)因為并發(fā)度過高被限流。您所有的函數(shù)由一個總的并發(fā)度控制。云工作流執(zhí)行到任務(wù)類型節(jié)點時會同步調(diào)用函數(shù)計算,此數(shù)值與其他調(diào)用方式的并發(fā)度共用。您可以申請調(diào)整該值。

  • FC.ResourceExhausted:您的函數(shù)因為資源不足被限流。當出現(xiàn)這類錯誤時,請聯(lián)系我們。

  • FC.InternalServerError:函數(shù)計算出現(xiàn)系統(tǒng)錯誤,請重新執(zhí)行流程。

說明

{Error code}是函數(shù)計算的錯誤碼。詳細信息,請參見錯誤碼列表。

FC.Unknown

函數(shù)計算服務(wù)調(diào)用函數(shù)成功,但函數(shù)執(zhí)行出錯,且該錯誤碼未被捕獲,例如UnhandledInvocationError等。

{CustomError}

被調(diào)用方主動拋出的自定義異常錯誤,例如函數(shù)內(nèi)部業(yè)務(wù)錯誤,云工作流內(nèi)部業(yè)務(wù)錯誤。

FnF.TaskTimeout

云工作流某步驟執(zhí)行超時。

FnF.Timeout

云工作流整體執(zhí)行超時。

FnF.ALL

捕獲云工作流系統(tǒng)的所有錯誤。

常見錯誤處理示例

基礎(chǔ)錯誤重試

本示例中如果“my-error-handle-example”集成調(diào)用產(chǎn)生錯誤,且命中MyCustomException1,則依照策略最大重試3次,每次重試次數(shù)3次耗盡后,當前錯誤會命中MyCustomException1的錯誤捕獲規(guī)則,通過OutputConstructor構(gòu)造一個自定義的錯誤輸出,作為輸入流轉(zhuǎn)至ErrorCatchExit狀態(tài)。

Type: StateMachine
Name: ErrorHandleExample
SpecVersion: v1
Description: 基礎(chǔ)錯誤處理示范
StartAt: my-error-handle-example
States:
  - Type: Task
    Name: my-error-handle-example
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      resourceArn: acs:fc:{regionId}:{accountId}:functions/myfunction/LATEST
      invocationType: Sync
      body: |
        xxx
    Retry:
      - Errors:
          - MyCustomException1
        Description: 重試策略1
        MaxAttempts: 3
        IntervalSeconds: 2
    Catch:
      - Errors:
          - MyCustomException1
        Description: 捕獲策略1
        OutputConstructor:
          ErrorCode: MyCustomException1
          ErrorMessage: MyCustomException1
        Next: ErrorCatchExit
    Next: SucceededExit
  - Type: Pass
    Name: ErrorCatchExit
    End: true
  - Type: Pass
    Name: SucceededExit
    End: true

在保存前必須驗證resourceArn的合法性:resourceArn:acs:fc:{regionId}:{accountId}:functions/myfunction/LATEST中的resourceArn示例應(yīng)替換為您實際的函數(shù)ARN。獲取函數(shù)ARN的方法,請參見創(chuàng)建事件函數(shù)。

  • regionId:應(yīng)為您函數(shù)所在的阿里云地域,例如"cn-beijing"或"cn-hangzhou"。

  • accountId:應(yīng)為您的阿里云賬號(主賬號)ID。

  • myfunction:應(yīng)為您的實際函數(shù)名稱。

  • LATEST:表示使用最新版本的函數(shù),您可以根據(jù)需要指定具體的版本或別名。

MyCustomException1:您可根據(jù)業(yè)務(wù)的需求,修改成符合您需要的錯誤信息。

退避錯誤重試

本示例中如果“my-error-handle-example”集成調(diào)用產(chǎn)生錯誤,且命中 MyCustomException2MyCustomException3,則依照策略最大重試3次,初始重試間隔時間是5秒,按照每次退避2.0的速率,會按照 [5, 10, 20, 40] 的間隔時間進行重試,重試次數(shù)3次耗盡后,當前錯誤會命中MyCustomException2MyCustomException3的錯誤捕獲規(guī)則,通過OutputConstructor構(gòu)造一個自定義的錯誤輸出,作為輸入流轉(zhuǎn)至ErrorCatchExit狀態(tài)。

Type: StateMachine
Name: ErrorHandleExample
SpecVersion: v1
Description: '退避錯誤處理示范'
StartAt: my-error-handle-example
States:
  - Type: Task
    Name: my-error-handle-example
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      resourceArn: acs:fc:{regionId}:{accountId}:functions/myfunction/LATEST
      body: xxx
    Retry:
      - Errors:
          - MyCustomException2
          - MyCustomException3
        Description: 重試策略2
        MaxAttempts: 3
        IntervalSeconds: 5
        BackoffRate: 2.0
    Catch:
      - Errors:
          - MyCustomException2
          - MyCustomException3
        Description: 捕獲策略2
        Next: ErrorCatchExit
    Next: SucceededExit
  - Type: Pass
    Name: ErrorCatchExit
    End: true
  - Type: Pass
    Name: SucceededExit
    End: true

復(fù)雜重試策略

本示例中如果“my-error-handle-example”集成調(diào)用產(chǎn)生錯誤,通過聲明針對FnF.ALL的錯誤重試和錯誤捕獲,當發(fā)生除MyCustomException1MyCustomException2MyCustomException3外的其它任何錯誤時,都會首先進行重試,依照策略最大重試3次,初始重試間隔時間是5秒,按照每次退避2.0的速率,由于設(shè)置了最大退避重試間隔時間,由于最后一次退避間隔時間40s大于了設(shè)置的最大退避重試間隔時間30s,所以實際會按照 [5, 10, 20, 30] 的間隔時間進行重試,重試次數(shù)3次耗盡后,會命中FnF.ALL的錯誤捕獲規(guī)則,由于沒有自定義的OutputConstructor構(gòu)造, 默認流轉(zhuǎn)至ErrorCatchExit狀態(tài)。

Type: StateMachine
Name: ErrorHandleExample
SpecVersion: v1
Description: '錯誤處理示范'
StartAt: my-error-handle-example
States:
  - Type: Task
    Name: my-error-handle-example
    Action: FC:InvokeFunction
    TaskMode: RequestComplete
    Parameters:
      resourceArn: acs:fc:{regionId}:{accountId}:functions/myfunction/LATEST
      body: xxx
    Retry:
      - Errors:
          - MyCustomException1
        Description: 重試策略1
        MaxAttempts: 3
        IntervalSeconds: 2
      - Errors:
          - MyCustomException2
          - MyCustomException3
        Description: 重試策略2
        MaxAttempts: 3
        IntervalSeconds: 5
        BackoffRate: 2.0
      - Errors:
          - FnF.ALL
        Description: 重試策略2
        MaxAttempts: 3
        IntervalSeconds: 5
        BackoffRate: 2.0
        MaxBackoffSeconds: 30
    Catch:
      - Errors:
          - MyCustomException1
        Description: 捕獲策略1
        OutputConstructor:
          ErrorCode: MyCustomException1
          ErrorMessage: MyCustomException1
        Next: ErrorCatchExit
      - Errors:
          - MyCustomException2
          - MyCustomException3
        Description: 捕獲策略2
        Next: ErrorCatchExit
      - Errors:
          - FnF.ALL
        Description: 捕獲策略3
        Next: ErrorCatchExit
    Next: SucceededExit
  - Type: Pass
    Name: ErrorCatchExit
    End: true
  - Type: Pass
    Name: SucceededExit
    End: true