I have a standard 3 layer project and my data layer either accesses the database or an API. I would like to be able to show information to the user in case there are problems occurring in the data layer.
I would like to show in the interface if there was any error (some required info by the API was not set, problems connecting to the database/API or any other problem that could happen).

Currently I would have an "out string error" parameter that would return the problem message. But this smells bad and this will also require my business layer to have the same paramter, which smells even worse.

What would be a nice architecture so I can pass information of eventual problems to a higher layer? 

Thanks!