Cancellation Scope와 Try/Catch는 무엇이 다른가요?

try/catch는 try 내부에 배치된 액티비티가 예상치못한 오류가 발생하게되면, catch내부에 배치한 액티비티를 실행하게됩니다. 주로 중단없이 다음단계를 실행하게끔 만들어야 하거나, 오류발생시 스크린샷을 남기는 등, 발생 오류원인을 분석하기위해 사용하곤 합니다.
Cancelation Scope은 내부에 배치된 자식 액티비티들을 동시에 실행시켜주는 병렬 처리 액티비티인 Parallel과 함께 사용하게 됩니다.
Parallel에 배치된 여러 Cancelation Scope(이하 'Scope) 중 가장 먼저 수행된 Scope이 있으면, 다른 Scope내 작업을 취소시킬수 있습니다.

Cancellation Scope에 대한 예제는 이전에 비슷한 문의에 대한 답변이 남긴 Topic을 링크로 붙이겠습니다. 예제는 'Cancelation Scope Example.xaml’을 참고해주세요

해당 Topic 내용을 참고하여 설명하자면,
2개의 Cancelation Scope 액티비티가 배치되어 있습니다. (각각 A,B 라고 명명하겠습니다.)

A는 6초 대기한 후, “Agency A: Your ticket has been bought!!!” 메시지를 출력합니다.
B는 4초 대기한 후, “Agency B: Your ticket has been bought!!!” 메시지를 출력합니다.

해당 예제를 실행하고나면, “Agency B: Your ticket has been bought!!!” 메시지 출력과 함께 시작부터 종료까지 총 4초(가끔 5초)가 걸리게됩니다.
“Agency A: Your ticket has been bought!!!” 메시지는 출력하지 않고, CancellationHandler에 배치된 메시지를 대신 출력하게 됩니다.

실질적으로 써본적은 없지만, 여러페이지로 나뉜 WebSite의 데이터가 페이지별로 3~4가지 유형이 있다면, 유형 판단할때 사용하여 해당 유형에 맞는 데이터 스크래핑 작업을 빠르게 진행시키게 만들면 도움이 될듯합니다. :thinking:

Try/Catch와 다른점을 찾는다면… 음… 목적자체가 다르다고 해야할까요? :sweat_smile:

2 Likes