The first mistake I can see is this:
try {
} catch (Exception ex) {
throw ex;
}
is
functionally strictly equivalent to not handling exceptions at all and
try {
Something();
} catch (Exception ex) {
throw ex;
} finally {
SomethingElse();
}
is
functionally strictly equivalent to
try {
Something();
} finally {
SomethingElse();
}
Beyond functional equivalence: you are just wasting time and resources for doing nothing. Just don't catch and handle this way. In first case, don't use try-catch at all.
This and your other question show that you have no clue on two critically important topics: exceptions and events. I don't know a good way to help you more effectively before you do the following: pause all you are doing and study this two topic in detail. Practice on very simple examples, not on HTTP, networking UI or any other advanced topic. Seriously. Before you master it, you would just waste your time.
[EDIT]
After getting this answer, OP fixed the problems mentioned above, in the body of the question. Of course, it still requires to think at the major problem.
—SA