10

After some research I found that a custom exception should look like this:

using System;
using System.Runtime.Serialization;

namespace YourNamespaceHere
{
    [Serializable()]
    public class YourCustomException : Exception, ISerializable
    {
        public YourCustomException() : base() { }
        public YourCustomException(string message) : base(message) { }
        public YourCustomException(string message, System.Exception inner) : base(message, inner) { }
        public YourCustomException(SerializationInfo info, StreamingContext context) : base(info, context) { }
    }
}

But I have small problem.

I want above exception to have two additional fields, say int ID and int ErrorCode. How do I add these two fields and initialize them - shall I add a new constructor, with these two parameters and the message parameter?

Also can you help me and show how to write the serialization methods for this new class which will have the two new properties?

Thank you.

  • 1
    Just add the properties to your class – singsuyash Oct 09 '15 at 06:48
  • found this http://blogs.msdn.com/b/agileer/archive/2013/05/17/the-right-way-to-write-a-custom-exception-class.aspx – singsuyash Oct 09 '15 at 06:53
  • @singsuyash: Shall I add *new* constructor which takes message and the two integers? It will be nice if someone can sum up those things and what you link as an answer for my class with those two integer properties. –  Oct 09 '15 at 07:01
  • Shetty added an example for you – singsuyash Oct 09 '15 at 08:46

1 Answers1

13

It will look something like this. You look for more details here What is the correct way to make a custom .NET Exception serializable?

 [Serializable()]
        public class YourCustomException : Exception, ISerializable
        {
            public Int Id { get; set; }
            public Int ErrorCode { get; set; }
            public YourCustomException() : base() { }
            public YourCustomException(string message) : base(message) { }
            public YourCustomException(string message, System.Exception inner) : base(message, inner) { }
            public YourCustomException(SerializationInfo info, StreamingContext context) : base(info, context) { }
            public YourCustomException(string message, int Id, int ErrorCode)
                : base(message)
            {
                this.Id = Id;
                this.ErrorCode = ErrorCode;
            }
        }
Community
  • 1
  • 1
Shetty
  • 1,652
  • 4
  • 22
  • 36