自定义异常类型

   [Serializable]
    sealed class DiskFullException : Exception, ISerializable
    {
        public string diskPath;

        public string DiskPath
        {
            get
            {
                return diskPath;
            }
        }

        public override string Message
        {
            get
            {
                string msg = base.Message;
                if (diskPath != null)
                {
                    msg = Environment.NewLine + "Disk Path:" + diskPath;
                }
                return msg;
            }
        }

        public DiskFullException()
            : base()
        {

        }
        public DiskFullException(string Message)
            : base(Message)
        {
        }
        public DiskFullException(string message, Exception innerException)
            : base(message, innerException)
        {
        }

        private DiskFullException(SerializationInfo info, StreamingContext context)
            : base(info, context)
        {
            diskPath = info.GetString("diskPath");
        }

        void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context)
        {
            info.AddValue("diskPath", diskPath);
            base.GetObjectData(info, context);
        }

        public DiskFullException(string Message, string diskpath)
            : this(Message)
        {
            this.diskPath = diskpath;
        }

        public DiskFullException(string Message, string diskpath, Exception innerException)
            : this(Message, innerException)
        {
            this.diskPath = diskPath;
        }
    }

    class App
    {
        static void Main()
        {
            DiskFullException e = new DiskFullException("The Disk is full", @"C:/");
            FileStream fs = new FileStream(@"Test", FileMode.Create);
            IFormatter f = new BinaryFormatter();
            f.Serialize(fs, e);
            fs.Close();

            fs = new FileStream(@"Test", FileMode.Open);
            e = (DiskFullException)f.Deserialize(fs);
            fs.Close();
            Console.WriteLine("Type:{1}{0}Diskpath:{2}{0}Message:{3}", Environment.NewLine, e.GetType(), e.diskPath, e.Message);
            Console.ReadLine();
        }
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值