Please see my comment to the question: the problem is only one: you have no clue. To understand how exception works, you need to understand how thread works and, desirably, a thread. Hope my past answers can give you the idea:
Does Exception in C# Constructor Cause Caller Assignment to Fail?[
^],
where was stored .net exceptions in operating system[
^].
Exception handling is done for isolating exceptional behavior from "regular", therefore, don't catch locally, let exceptions propagate.
[EDIT]
Gbenbam asked:
I have read your past answers but for me to fully comprehend them I will appreciate it if you answer the following questions:How many try/catch block do you recommend for this my hypothetical example? What do you mean by letting them propagate (can you kindly expanciate [? — SA])?
This can only be explained in a complex. Please see more detailed set of links to my past answers:
Where you catch all exceptions:
When i run an application an exception is caught how to handle this?[
^].
Re-throwing:
throw . .then ... rethrowing[
^].
Exception should be thrown in very few strategically selected places; I call then "competence point", where you know exactly how to interpret them. Besides, on top of stack of each thread (not always, for UI, there are special point predefined in the libraries, in the main event cycle of the UI application, please see below).
In UI:
For forms:
Error Logging and Screen Shot.[
^],
Catching an Exception[
^].
On exceptions on top of stack frame, inner exceptions, re-throwing, using
StackTrace
:
Exception Details: System.Runtime.InteropServices.COMException: Retrieving the COM class factory for component with CLSID {0006F03A-0000-0000-C000-000000000046} failed due to the following error:...[
^].
Many aspects together:
Handling exceptions in class library (dll)[
^].
—SA