What are the fields I should log in Log message
for the complete info on the exception
object for debugging later? (Just logging exception.Message
is not helpful often.)
Hello,
I am trying to log the below fields from System.Exception
within the catch
part of Try Catch
activity. But I am not able to get the name of the activity from which the exception arises. This will be very bad in production. If I do not use the Try Catch
, the studio shows the error popup showing exactly all the fields of the exception like :
Type of Exception. Exception Trace. Excpeption message, Exception causing activity.
I even tried to log below fields:
-
exception.Message: This gives exception message but not inner exception trace and name of the source
-
exception.StackTrace: This gives just trace. No name for the source activity name.
-
exception.Source: This is just returning
System.Activities
-
exception.TargetSite: Void Execute(System.Activities.CodeActivityContext)
-
exception.GetType: System.Exception
-
exception.InnerException : null
-
exception.HResult : Null
-
exception.HelpLink
-
exception.GetBaseException
-
exception.InnerException
-
exception.ToString: No source
Can you please help me iterating through all the important fields of exception to have error message just like what we get in pop up from Studio?
Hi,
You should create your own exceptions to handle errors, since you are a Developer this is best practice, and for those you are not aware you can use to write exception to a string instead of writing exception.Message.
Pardon, I can’t recall much of exception handling as of now. Would learn some on exception hierarchy and come back.
for those you are not aware you can use to write exception to a string instead of writing exception.Message.
Can you please show an example?
Sure,
Depending on what happened in the workflow Try Catch bahaviour differently:
For BusinessRuleExceptions it will just add information to Log file
For Application Exception it will retry this transaction item but first close all iExplore windows and run it from the beggining
For MissingMethodException it will add some additional information to the Log file
And I’m using exception to catch everything I didn’t predict while doing solution, unhandled exceptions. Once in the week I’m reading log file for unhandled exception and i’m trying to improve solution if there are any errors.
Check this: Try Catch Printing Exception Source - #5 by badita
Seems you need to invoke the workflow to be able to get the exception.Source inside it.
Not Agree, we as a developers are able to create own exceptions to handle “something”, exception are not only the Errors in the code. Imagine that you are having try catch, inside there is sequence with some data validation, you got inforation from business that one field of data shouldn’t be an integer, it has to be a text. In that scenarion you could use IF statement and if value is not pure text, you can use Throw activity, to throw exception, you are able to give type and message. So you can create New BusinessException(“Value is not text”) and catch it under the Catch, and for this particular error your robot do something “extra”
That is good Idea. However, we should refrain using the exceptions for program flow :
This is what I have done in my projects where I log exception details that is useful. You can watch the video here : Exception Logging in UiPath Workflows - YouTube and source code is on my repo : Pulse · virangp21/RPA-ExceptionLogging · GitHub