As I understand it, you have three attempts / catches - one for each level: DAL, BLL, UI.
You should only catch when you are going to do something.
From what I understand, you just exit DAL, so there is no need for it.
You are registering exeption from the BLL, and this is good practice, as you will be able to collect exception data to ultimately improve the application.
Then you will understand at the UI level to translate the exception into something user-friendly. This is normal.
Therefore, I would get rid of try / catch from the DAL level - if you really are doing nothing but fixing the exception.
In some scenarios, it may be useful to add an identifier to the BLL, which is passed to the user interface exception and shown to end users, so if they call for support, personel support can map the identifier to the exception on the server.
This can be done, for example, by adding Guid or something else meaningful and unique to the Exception.Data collection.
Alfred myers
source share