Tüm Ürünler
Search
Belge Merkezi

CloudFlow:Error handling

Son Güncelleme:Oct 06, 2026

CloudFlow iş akışları çalıştırma sırasında beklenen veya beklenmeyen hatalarla karşılaşabilir. Hata yönetimi, başarısız olan durumu yeniden deneyerek veya farklı bir duruma geçiş yaparak sorunsuz bir şekilde kurtulmanızı sağlar.

Birlikte çalışan iki mekanizma bulunur:

  • Retry -- Başarısız olan durumu otomatik olarak yeniden yürütür. Kısıtlama (throttling) veya geçici ağ sorunları gibi geçici hatalar için bu yöntemi kullanın.

  • Catch -- Tüm yeniden deneme girişimleri tükendiğinde hata devam ediyorsa iş akışını belirlenen bir duruma geçirir.

CloudFlow her zaman önce Retry seçeneğini değerlendirir. Yalnızca tüm yeniden deneme girişimleri başarısız olduktan sonra Catch seçeneğini değerlendirir.

Desteklenen durumlar

Aşağıdaki durum türlerine Retry ve Catch alanlarını ekleyin:

Retry

Retry alanı, yeniden deneme kurallarından oluşan bir dizi kabul eder. Her kural, hangi hataların eşleşeceğini ve yeniden denemenin nasıl yapılacağını belirtir.

Parametre Tür Gerekli Açıklama Örnek
Errors []string Evet Eşleştirilecek hata türleri. Bkz. Hata türleri. ["MyCustomError", "FnF.ALL"]
Description string Evet Bu yeniden deneme kuralı için bir etiket. Retry policy #1
MaxAttempts int Evet Maksimum yeniden deneme sayısı. 3
IntervalSeconds int Evet Yeniden denemeler arasındaki ilk aralık (saniye cinsinden). Maksimum: 86.400 (24 saat). 10
BackoffRate float Hayır Her girişimden sonra IntervalSeconds değerine uygulanan çarpan. Belirtilmediğinde aralık sabit kalır. 2
MaxBackoffSeconds int Hayır Hesaplanan yeniden deneme aralığı için üst sınır (saniye cinsinden). Maksimum: 86.400 (24 saat). 30
Not

Birden fazla yeniden deneme kuralı aynı hata türüyle eşleşirse CloudFlow yalnızca ilk eşleşen kuralı kullanır. Daha spesifik hata türlerinin önce değerlendirilmesi için bunları FnF.ALL öncesine yerleştirin.

Catch

Catch alanı, yakalama kurallarından oluşan bir dizi kabul eder. Tüm yeniden denemelerden sonra hata devam ediyorsa CloudFlow yakalama kurallarını sırayla değerlendirir ve ilk eşleşen kuralın Next durumuna geçiş yapar.

Parametre Tür Gerekli Açıklama Örnek
Errors []string Evet Eşleştirilecek hata türleri. Bkz. Hata türleri. ["MyCustomException1", "FnF.ALL"]
Description string Evet Bu yakalama kuralı için bir etiket. Error catch rule #1
OutputConstructor map[string]any Hayır Next durumuna giriş olarak aktarılacak özel çıktıyı oluşturur. Bkz. Durum OutputConstructor. Aşağıdaki örneklere bakın.
Next string Evet Hata yakalandığında geçiş yapılacak durum. my-next-state

OutputConstructor

Bir hata oluştuğunda başarısız durum herhangi bir çıktı üretmez. OutputConstructor olmadan sonraki durum hiçbir giriş almaz ve iş akışı anlamlı bir şekilde ilerleyemez. OutputConstructor kullanarak Next durumunun tüketebileceği yapılandırılmış bir çıktı oluşturun.

Not

Birden fazla yakalama kuralı aynı hata türüyle eşleşirse CloudFlow yalnızca ilk eşleşen kuralı kullanır.

Hata türleri

CloudFlow hataları

Bu hatalar doğrudan CloudFlow motorundan kaynaklanır.

Hata türü Açıklama
FnF.TaskTimeout İş akışındaki tek bir adım zaman aşımına uğradı.
FnF.Timeout İş akışının genel yürütülmesi zaman aşımına uğradı.
FnF.ALL CloudFlow'un tüm hatalarını yakalayan bir joker karakter. Daha spesifik kuralların önce değerlendirilmesi için bunu Retry veya Catch dizisindeki son giriş olarak yerleştirin.

Function Compute hataları

Bu hatalar, CloudFlow Function Compute hizmetini çağırdığında oluşur. Diğer hizmet entegrasyonlarıyla ilgili hata türleri için ilgili hizmet belgelerine bakın.

Hata türü Açıklama
FC.ResourceThrottled Yüksek eşzamanlılık nedeniyle işlevler kısıtlandı. Tüm işlevler toplam bir eşzamanlılık değeri ile sınırlıdır. CloudFlow, Task durumlarını yürüttüğünde Function Compute hizmetini senkron olarak çağırır. Toplam eşzamanlılık değeri, işlev çağrılarındaki eşzamanlılık değeri ile diğer çağrı yöntemlerinin eşzamanlılık değerlerinin toplamıdır. Senkron Function Compute çağrılarının eşzamanlılık değerini değiştirmek için istekte bulunabilirsiniz.
FC.ResourceExhausted Yetersiz kaynak nedeniyle işlevler kısıtlandı. Bu sorunu çözmek için Bize ulaşın.
FC.InternalServerError Function Compute içinde bir sistem hatası oluştu. İş akışını yeniden yürütün.
FC.Unknown Function Compute işlevi çağırdı ancak yürütme sırasında yakalanmamış bir hata oluştu. Örnek hata kodu: UnhandledInvocationError.
FC.{ErrorCode} {ErrorCode} öğesinin belirli hata kodu olduğu diğer tüm Function Compute hataları. Bkz. Function Compute hata kodları.

Özel hatalar

Hata türü Açıklama
{CustomError} Çağrılan taraf tarafından oluşturulan özel istisna hataları; örneğin, işlevlerinizdeki iş mantığı hataları.

Örnekler

Tüm örneklerde FC:InvokeFunction aracılığıyla bir Function Compute işlevini çağıran bir Task durumu kullanılır. resourceArn yer tutucusunu gerçek işlev ARN'nizle değiştirin:

acs:fc:<region-id>:<account-id>:functions/<function-name>/<version-or-alias>
Yer tutucu Açıklama Örnek
<region-id> İşlevin bulunduğu bölge cn-hangzhou
<account-id> Alibaba Cloud hesap ID'si Sayısal hesap ID'niz
<function-name> İşlev adı myfunction
<version-or-alias> İşlev sürümü veya takma adı LATEST

İşlev ARN'sini elde etme hakkında ayrıntılı bilgi için bkz. İşlevin ARN'sini elde edin.

Temel yeniden deneme ve yakalama

Bu örnekte MyCustomException1 hatası 2 saniyelik aralıklarla en fazla 3 kez yeniden denenir. Tüm yeniden denemeler başarısız olursa yakalama kuralı özel hata çıktısı oluşturur ve ErrorCatchExit durumuna geçer.

Type: StateMachine
Name: ErrorHandleExample
SpecVersion: v1
Description: an example of basic error handling
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: retry policy 1
        MaxAttempts: 3
        IntervalSeconds: 2
    Catch:
      - Errors:
          - MyCustomException1
        Description: catch policy 1
        OutputConstructor:
          ErrorCode: MyCustomException1
          ErrorMessage: MyCustomException1
        Next: ErrorCatchExit
    Next: SucceededExit
  - Type: Pass
    Name: ErrorCatchExit
    End: true
  - Type: Pass
    Name: SucceededExit
    End: true

Çalışma zamanında gerçekleşenler:

  1. Task durumu FC:InvokeFunction işlevini çalıştırır.

  2. MyCustomException1 hatası oluşursa CloudFlow, girişimler arasında 2 saniye bekleyerek en fazla 3 kez yeniden dener.

  3. Tüm yeniden denemeler başarısız olursa yakalama kuralı MyCustomException1 ile eşleşir, ErrorCode ve ErrorMessage içeren bir çıktı oluşturur ve ErrorCatchExit durumuna geçer.

  4. Hata oluşmazsa iş akışı SucceededExit durumuna geçer.

Not

MyCustomException1 örnek olarak kullanılmıştır. İş gereksinimlerinize göre hata adını değiştirebilirsiniz.

Geri çekilmeli yeniden deneme

Bu örnekte MyCustomException2 veya MyCustomException3 hataları üstel geri çekilme (exponential backoff) ile en fazla 3 kez yeniden denenir. İlk aralık 5 saniyedir ve her girişimden sonra iki katına çıkar (geri çekilme oranı 2,0).

Type: StateMachine
Name: ErrorHandleExample
SpecVersion: v1
Description: an example of backoff error handling
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: retry policy 2
        MaxAttempts: 3
        IntervalSeconds: 5
        BackoffRate: 2.0
    Catch:
      - Errors:
          - MyCustomException2
          - MyCustomException3
        Description: catch policy 2
        Next: ErrorCatchExit
    Next: SucceededExit
  - Type: Pass
    Name: ErrorCatchExit
    End: true
  - Type: Pass
    Name: SucceededExit
    End: true

Yeniden deneme zamanlaması:

Sistem, 2,0 geri çekilme oranına dayalı olarak 5, 10, 20 ve 40 saniyelik aralıklarla yeniden deneme girişimlerinde bulunur.

Tüm yeniden denemeler başarısız olursa yakalama kuralı iş akışını ErrorCatchExit durumuna geçirir. Burada OutputConstructor tanımlanmadığından sonraki durum özel hata çıktısı almaz.

Birden fazla yeniden deneme ve yakalama ilkesi

Bu örnek, farklı yeniden deneme stratejilerine sahip üç düzeyli hata yönetimini birleştirir:

  1. **MyCustomException1** -- Sabit 2 saniyelik aralıklarla en fazla 3 kez yeniden dene.

  2. **MyCustomException2 ve MyCustomException3** -- Üstel geri çekilme ile en fazla 3 kez yeniden dene (başlangıç: 5 sn, geri çekilme oranı: 2,0).

  3. **FnF.ALL (tümünü yakala)** -- Üstel geri çekilme ile en fazla 3 kez yeniden dene (başlangıç: 5 sn, geri çekilme oranı: 2,0), MaxBackoffSeconds ile 30 saniyede sınırla.

Type: StateMachine
Name: ErrorHandleExample
SpecVersion: v1
Description: an example of error handling
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: retry policy 1
        MaxAttempts: 3
        IntervalSeconds: 2
      - Errors:
          - MyCustomException2
          - MyCustomException3
        Description: retry policy 2
        MaxAttempts: 3
        IntervalSeconds: 5
        BackoffRate: 2.0
      - Errors:
          - FnF.ALL
        Description: retry policy 3
        MaxAttempts: 3
        IntervalSeconds: 5
        BackoffRate: 2.0
        MaxBackoffSeconds: 30
    Catch:
      - Errors:
          - MyCustomException1
        Description: catch policy 1
        OutputConstructor:
          ErrorCode: MyCustomException1
          ErrorMessage: MyCustomException1
        Next: ErrorCatchExit
      - Errors:
          - MyCustomException2
          - MyCustomException3
        Description: catch policy 2
        Next: ErrorCatchExit
      - Errors:
          - FnF.ALL
        Description: catch policy 3
        Next: ErrorCatchExit
    Next: SucceededExit
  - Type: Pass
    Name: ErrorCatchExit
    End: true
  - Type: Pass
    Name: SucceededExit
    End: true

Kural eşleştirme işleyişi:

CloudFlow, yeniden deneme ve yakalama kurallarını göründükleri sırayla değerlendirir. MyCustomException1, MyCustomException2 veya MyCustomException3 ile eşleşmeyen bir hata için FnF.ALL tümünü yakalama kuralı devreye girer. FnF.ALL yeniden denemesi, aralığı sınırlamak için MaxBackoffSeconds: 30 kullanır; böylece sistem 5, 10, 20 ve 30 saniyelik aralıklarla yeniden deneme girişimlerinde bulunur.

Tüm yeniden deneme girişimleri tükendikten sonra ilgili yakalama kuralı iş akışını ErrorCatchExit durumuna geçirir.