Generally, you should put your exception handling code in your controllers. In your terminology, I assume that MVC controllers live at your "Web" level and that these controllers call methods at your "service" level, for example, the "DeleteOrder" method that you specified. If so, in the error handling code in DeleteOrder you should just throw an exception:
if (order == null) { throw new InvalidOperationException("Specified OrderId does not exist"); }
Thus, the unhandled exception will be sent to your controller, where the exception handling code lives, and there you can register an exception and redirect the user to the corresponding page with an error.
Regarding exception handling in the controller, you have several options:
The fourth method (create your own exception filter) is probably the most reliable way. Here you can add an exception log, as well as a code to redirect the user to the corresponding error page, depending on the type of exception generated.
You can find a good overview of MVC exception handling here .
source share