Если ваше приложение генерирует нарушения внешнего ключа или уникального индекса, возможно, что-то не так с приложением, и об этом должны уведомлять разработчики, а не пользователи. То есть, как правило, проверка входных данных, которые дает пользователь, должна предотвращать появление подобных исключений.
Распространенным подходом является перехват необработанных ошибок в событии Application_Error и их запись в файл или базу данных. Также есть инструменты, которые могут помочь с регистрацией ошибок, такие как ELMAH
Для пользователя подойдет только общее сообщение ... но разработчики должны следить за журналами ошибок. См. Сообщение Джеффа Этвуда о Разработка на основе исключений .
Редактировать: Чтобы ответить на другую часть вашего вопроса - в .NET существует множество различных объектов Exception, но большинство исключений SQL, похоже, представляются в виде универсального класса SqlException. Вы можете узнать больше об ошибках, изучив свойства Message и StackTrace (), а также углубившись в свойство InnerException. Что-то вроде нарушения внешнего ключа может проявляться как HttpException с вложенным в него SqlException.