Hata Yönetimi komutları
try Try
Hata yönetimi bloğu. catch bölümü bir komut başarısız olduğunda çalışır (catch --error:err ayrıntıları $err$ içine koyar); finally bölümü hata olsun olmasın her zaman ardından çalışır (ör. bir tarayıcıyı veya çalışma kitabını kapatmak için).
Blok komutu: try … endtry; bölümleri: catch, finally.
Bölüm catch
| Parametre | Değer | Varsayılan | Açıklama |
|---|---|---|---|
--error | değişken adı | Hatayı record olarak alan değişken: Message, Type, CommandLine, CommandType, Timestamp (ör. --error:err, ardından $err.Message$) | |
--errormessage | değişken adı | Yalnızca hata mesajını alan değişken | |
--errorline | değişken adı | Yalnızca başarısız olan satır numarasını alan değişken | |
--errortype | şunlardan biri: business, system | Yalnızca bu türdeki hataları ele al; diğer tür dıştaki bir catch'e iletilir. Boşsa tüm hatalar |
Bölüm finally
Parametre yok.
Örnekler
try
browser --action:open --url:"https://portal.example.com" --output:web
capture --browser:$web$ --action:click --dompath:"//button[@id='submit']"
catch --error:err
log --message:"Error occurred: $err.Message$" --level:error
mail --to:"admin@company.com" --subject:"RPA Error" --body:$err.Message$
finally
browser --browser:$web$ --action:close
endtry
try
if --condition:"$total$ <= 0"
throw --message:"Invoice $no$ has no total"
endif
catch --error:err
log --message:$err.Message$ --level:error
throw
endtry
retry Retry
İçindeki komutlardan biri başarısız olursa komutları toplam --times denemeye kadar yeniden çalıştırır; --until ile, komutlardan sonra bu koşul yanlış olduğu sürece de yeniden dener. Son denemeden sonra hata her zamanki gibi devam eder (çevreleyen bir try/catch yakalar). İş hataları (throw --type:business) yeniden denenmez.
Blok komutu: retry … endretry.
Parametreler
| Parametre | Değer | Varsayılan | Açıklama |
|---|---|---|---|
--times | sayı | 3 | İlki dahil toplam deneme sayısı (3 = ilk çalıştırma ve en fazla 2 tekrar) |
--interval | sayı | 1 | Sonraki denemeden önce beklenecek saniye |
--until | koşul | Komutlar çalıştıktan sonra bu koşul yanlış olduğu sürece de yeniden dene, ör. $status$ = "done" (if --condition gibi yazılır) |
Örnekler
retry --times:3 --interval:5
browser --action:open --url:"https://portal.example.com" --output:web
capture --browser:$web$ --action:click --dompath:"//button[@id='login']"
endretry
retry --times:10 --interval:30 --until:"$status$ = Ready"
restapi --action:get --url:"https://api.example.com/jobs/$jobId$" --output:job
set --name:status --value:$job.Json.status$
endretry
onerror Onerror
Görev hata yöneticisi: yalnızca hiçbir catch bölümünün yakalamadığı bir hata görevi başarısız kılmak üzereyken çalışır (hata ekran görüntüsü alındıktan sonra); hata --error değişkenindedir. Ardından çalıştırma başarısız olur (--then:complete ile tamamlandı olarak biter). Görev başına bir tane, ana düzeyde, genellikle sonda. Görevi durdurmak onu çalıştırmaz.
Blok komutu: onerror … endonerror.
Parametreler
| Parametre | Değer | Varsayılan | Açıklama |
|---|---|---|---|
--error | değişken adı | error | Hatayı kayıt olarak alan değişken: Message, Type, CommandLine, CommandType, Timestamp (ör. $error.Message$) |
--then | şunlardan biri: fail, complete | fail | Hata yöneticisinden sonra: fail - çalıştırma asıl hatayla başarısız olarak biter; complete - hata işlenmiş sayılır ve çalıştırma tamamlandı olarak biter (günlükte bir uyarıyla) |
Örnekler
onerror --error:err --then:fail
log --message:"Failed at line $err.CommandLine$ ($err.CommandType$): $err.Message$" --level:error
screenshot --file:"C:\Botream\Errors\$System.ExecutionId$.png" --onerror:continue
mail --action:send --smtp:smtp.company.com --port:587 --from:robot@company.com --to:support@company.com --subject:"Robot failed: $System.TaskName$" --body:$err.Message$ --onerror:continue
queue --action:fail --item:$item$ --reason:$err.Message$ --onerror:continue
window --action:close --window:$erp$ --onerror:continue
endonerror
throw Throw
Bir hata oluşturur: en yakın catch ele alır (--error değişkeni mesajı içerir), aksi halde görev başarısız olur. Bir catch bölümü içinde --message olmadan yakalanan hatayı iletir.
Parametreler
| Parametre | Değer | Varsayılan | Açıklama |
|---|---|---|---|
--message | metin | Hata mesajı, ör. "Invoice $no$ has no total"; catch içinde boş bırakılırsa yakalanan hata yeniden fırlatılır | |
--type | şunlardan biri: business, system | business | business: sürecin bir kuralı ihlal edildi (hatalı veri, eksik onay) - asla yeniden denenmez, öğe atlanır. system: uygulama veya ağ başarısız oldu - diğer teknik hatalar gibi yeniden denenir |