OverOps will catch exceptions and identify what type of exceptions the applications are throwing. These exceptions may be written within the code of the application to be thrown purposely and perform an action on it. Other times, the programmer may not be aware that their application is throwing an exception.
We identify exceptions as follows:
Caught Exception - the simplest of everything else - the exception was thrown from any code, it went over some user code and was caught in the user’s code. There could be some 3rd party code between user’s code frames, but the user code is the one catching it.
Swallowed Exception - a subset of the Caught Exception, but the exception object wasn’t used in the catch clause. You wouldn’t see this if the catch is not in user code.
Uncaught (= Caught by 3rd Party) Exception - This actually means everything else - all the events where the exception was thrown from somewhere, passed over some user code, and then was caught by 3rd party code would end up as uncaught. One note about this is that even if you have try-catch in your code, if it doesn’t catch that exception type, it is not considered a catch.
Essentially, uncaught means that it was caught by 3rd party code, but it is not always marked like this. Some cases where it will get marked as uncaught and not as caught by 3rd party, are as follows:
The exception was actually uncaught - no code caught it - unreasonable for most applications
The catch method is a native method - a method that is written in C/C++ can potentially clear the exception, so our agent identifies it as uncaught
There is some failure with processing the method information - this shouldn’t happen for most cases, but it can.
If below the catch frame there aren’t any user frames
Point 4 above is the one distinguishing between Uncaught and Caught by 3rd Party - and this is why sometimes it is marked as one instead of the other.