《C#入门到精通》学习笔记 -- 实践: 自定义异常类的实现(2013-04-18)

来源:互联网 发布:常熟淘宝拍卖 编辑:程序博客网 时间:2024/06/06 15:45
namespace CustomizedExceptionClass{    class Program    {        static void Main(string[] args)        {            const string currentAccountId = "12345678";            try            {                LoginFunc(currentAccountId);            }            catch (UnMatchedTypeException e)            {                throw e;            }            catch(DuplicatedAccountIdExceptin e)            {                Console.Write(e);            }        }        private static void LoginFunc(string account)        {            if(account.Length > 5)            {                throw new UnMatchedTypeException("AccountID can not be longer than 15 chars");            }            if(account == "aaa")            {                throw new DuplicatedAccountIdExceptin("The account id is already exist.");            }            return;        }    }    /// <summary>    /// 自定义的异常类    /// </summary>    internal class CustomizedExceptionClass : Exception    {        /// <summary>        /// Initializes a new instance of the CustomizedExceptionClass class.        /// </summary>        public CustomizedExceptionClass()        {        }        /// <summary>        /// Initializes a new instance of the CustomizedExceptionClass class.  Takes a message.        /// </summary>        /// <param name="message">Reason for the exception</param>        public CustomizedExceptionClass(string message):base(message)        {        }        /// <summary>        /// Initializes a new instance of the CustomizedExceptionClass class. Used for chaining exceptions.        /// </summary>        /// <param name="message">Reason for the exception</param>        /// <param name="innerException">Chained exception</param>        public CustomizedExceptionClass(string message, Exception innerException)            : base(message, innerException)        {        }        /// <summary>        /// Initializes a new instance of the CustomizedExceptionClass class.  Used for serialization exceptions        /// </summary>        /// <param name="info">Serialization info</param>        /// <param name="context">Streaming context</param>        protected CustomizedExceptionClass(            System.Runtime.Serialization.SerializationInfo info,            System.Runtime.Serialization.StreamingContext context)            : base(info, context)        {        }    }    /// <summary>    /// 类型不匹配异常    /// </summary>    class UnMatchedTypeException : CustomizedExceptionClass    {        public UnMatchedTypeException()        {        }        public UnMatchedTypeException(string message)            : base(message)        {        }    }    /// <summary>    /// 用户ID重复异常    /// </summary>    class DuplicatedAccountIdExceptin:CustomizedExceptionClass    {         public DuplicatedAccountIdExceptin()         {         }         public DuplicatedAccountIdExceptin(string message)             : base(message)        {        }    }