Friday, March 30, 2018

Create custom SQL exception with custom message in C# (CSharp)

Below is a sample code which is used to create a custom SQL exception with custom message. The parameter accepts the message to be thrown. It is mostly used in Unit testing scenario where you need to validate for a custom message.

Sample Code
  1. private SqlException GetSqlException(string message)
  2. {
  3. SqlErrorCollection collection = Construct();
  4. SqlError error = Construct(-2, (byte)2, (byte)3, "Server", message, "Prcedure", 100, (uint)1);
  5. typeof(SqlErrorCollection)
  6. .GetMethod("Add", BindingFlags.NonPublic | BindingFlags.Instance)
  7. .Invoke(collection, new object[] { error });
  8. var e = typeof(SqlException)
  9. .GetMethod("CreateException", BindingFlags.NonPublic | BindingFlags.Static, null, CallingConventions.ExplicitThis, new[] { typeof(SqlErrorCollection), typeof(string) }, new ParameterModifier[] { })
  10. .Invoke(null, new object[] { collection, "11.0.0" }) as SqlException;
  11. return e;
  12. }
  1. private T Construct(params object[] p)
  2. {
  3. return (T)typeof(T).GetConstructors(BindingFlags.NonPublic | BindingFlags.Instance)[0].Invoke(p);
  4. }

No comments:

Post a Comment