본문 바로가기

Uipath

Uipath - Try/Catch , Throw , Rethrow

이야기를 하던 와중에 같이 노는 친구가 아래와 같은 궁금증을 이야기 했다. 

이전에 테스트 해봤을때 Catch에서 Throw 를 던지면 바로 터지던게 기억이 나서

'Catch에서 throw 하면 터진다'고 말했더니 

oㅁO ?? 어케 되드라? 

갑자기 확신이 없어 테스트를 직접 해봤다. 

 

가장 먼저, 공식 문서부터 확인 

https://docs.uipath.com/activities/docs/try-catch

 

Try Catch

System.Activities.Statements.TryCatch Catches a specified exception type in a sequence or activity, and either displays an error notification or dismisses it and continues the execution. The activity has three main sections: Try - holds the activity that c

docs.uipath.com

공식문서에서 아주 상세하게 아래처럼 Try Catch에 대해 설명을 써놨다. 

■ Try - The activity performed which has a chance of throwing an error.
■ Catches - The activity or set of activities to be performed when an error occurs.
    ■ Exception - The exception type to look for. Please note that you can add multiple exceptions.
■ Finally - The activity or set of activities to be performed after the Try and Catches blocks are executed.
                 This section is executed only when no exceptions are thrown or when an error occurs and is caught
                 in the Catches section..

위에 가이드만 봤을땐 Try에서 터진 예상한 에러들을(Ex. ArgumentException, NullReferenceException 등 ) Catches 에서 잡게 설정해 두면 Finally 로 이동할 것 이다. 다만, Catch에서 터지는 에러는 try 구문 밖이라, 예상하지 못한 범위가 될 걸로 보이는데... 

 

안타깝게도 Throw에 대한 공식가이드는 없는 상황이라 바로 테스트를 해봤다. 

아주 쉽게 아래 처럼 간단하게 짜봤다.  

 

1. 반드시 터지는 Try 문 (왜냐면, '없음.csv' 파일은 진짜 없으니까)

2. Catches 에는 들어왔는지 확인을 위한 Write Line 구문과 순서대로 Throw 와 Rethrow 설정 

3. 마지막으로 Finally 에도 확인을 위한 Write Line을 작성해 두었다. 

1. Throw 실행 시 

catch 문까지 와서 Throw 에서 터진 상황 예상과 같이 Finally 까지는 가지 못한다.

2. Rethrow 실행 시 

catch 문까지 들어왔지만 (모든 Exception 을 받아들이도록 처리 해 두었으니) Finally까지 가지 못하고 에러가 터진 그곳으로 에러를 다시 던진 상황이다.

 

 

 

예상과 같이 둘다 Finally 까지는 가지 못하며, 어느 위치에서 에러를 보여주는지 에 따라 그 사용법이 다름을 알 수 있다. 

 

이에 대해 Uipath Form에서도 비슷한 논쟁이 있어서 참고삼아 가지고 와봤다.  

https://forum.uipath.com/t/how-to-use-throw-and-rethrow/11772/36

 

그리고 막짤로 현답