Существуют различные способы сделать это.Я полагаю, что представленное вами решение не является чем-то плохим, хотя оно мало масштабируется (сочетание обработки ошибок, специфичных для бизнеса, с кодом, связанным с веб-интерфейсом, создает некоторую связь).Все это зависит от вашей архитектуры: вы можете добавить поверхностный, легкий слой, который переводит бизнес-ошибки в веб-ошибки, которые обрабатываются в коде обработки ошибок веб-уровня.Вы также можете AoP и перехватывать вызовы и переводить ошибки для слоев выше.