Есть ли список значений класса ошибок исключений и что они означают? Конкретно sqlexception - PullRequest
4 голосов
/ 23 февраля 2012

Я работаю с базой данных и ловлю исключения для проверки различных условий. Я не могу просто поймать sqlException, так как он может много значить и обычно использует

catch (SqlException e)
        {
            if (e.Errors[0].Class == 14)
            {
                return 0;
            }
            else ........

Для проверки конкретных случаев. В этом примере класс 14 (по крайней мере, насколько я могу судить) означает повторяющуюся запись. Другой класс означает, что сервер не может быть найден или отказывается от соединения, или ошибка входа в систему и т. Д. Кто-нибудь знает, где можно найти список этих классов ошибок? Гуглить это сложно, так как все, что связано с «классом», становится очевидным.

Ответы [ 2 ]

6 голосов
/ 23 февраля 2012

Серьезность 14 может означать много вещей:

SELECT message_id, [text]
FROM sys.messages
WHERE language_id = 1033
AND severity = 14;

Чтобы увидеть полный список:

SELECT message_id, severity, [text]
FROM sys.messages
WHERE language_id = 1033
AND severity > 0
ORDER BY severity;

Я подозреваю, что вас больше интересует столбец message_id, чемстолбец серьезности, так как он немного более конкретен.

4 голосов
/ 23 февраля 2012

Свойство Class класса SqlError фактически указывает на серьезность ошибки. Тип ошибки см. В свойстве Number. Вы также можете использовать свойство Message, чтобы получить строку, описывающую ошибку. Вы можете найти список сообщений об ошибках сервера здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...