There is a standard way to do exception handling in 3-Tier or N-Tier applications, which is applicable in any programming language (not specific to .Net or C# only), there are certain rules for Exception Handling. Refer to them below.
- Exception should be logged into the database.
- It should be logged on the origin location (from where it is caught).
- Once an exception is caught:
- It should be wrapped into a Custom Exception class and then thrown further up the calling layers.
- Exception details should be logged into the database only once.
- If the exception is thrown from some other layer, then it should be forwarded to a further layer without logging to the database (since it's already logged in the origin).
- If it's a UI layer then a user friendly message should be displayed to the user.
- It should be wrapped into a Custom Exception class and then thrown further up the calling layers.
For more clarity refer to the following screen:

Hemant SrivastavaPosted Dec 24, 2014, 11:49 AM
I think, the idea "Exception should be logged into the database" is a kind of Company's preference.. sometime they just want logging into a file or on EventViewer and another service keeps on saving those log files/ log events as a repository on some server.