When handling SqlExceptions in C#, it is wise to assess the Class, as it indicates the severity.
Some classes are user error, others are fatal, etc.
This extension class will help you:
using System; using System.Data.SqlClient; namespace bo.MsSql { /// <summary> /// see http://msdn.microsoft.com/en-us/library/ms164086.aspx /// </summary> public static class SqlExceptionSeverety { public static bool IsInformational(this SqlException sqlException) { return sqlException.Class < 10; } public static bool IsUserCorractable(this SqlException sqlException) { return (sqlException.Class >= 10) && (sqlException.Class < 17); } public static bool IsSoftwareError(this SqlException sqlException) { return (sqlException.Class >= 17) && (sqlException.Class < 20); } public static bool IsFatalSystemProblem(this SqlException sqlException) { return sqlException.Class >= 20; } } }
–jeroen