如何自定义异常

时间:2021-09-08 20:30:57
      #region 如何自定义异常
            Console.WriteLine("请输入电脑价格(整数)----->");
            try
            {
                int inputPCNum = Convert.ToInt32(Console.ReadLine());
                PcPrice p = new PcPrice();
                p.Set(inputPCNum);
                Console.WriteLine("成交,顾客对价格很满意");
            }
            catch (Exception ex)
            {
                //输出异常信息
                Console.WriteLine("---------------处理异常部分----------------");
                Console.WriteLine("异常信息:{0}", ex.Message);
                Console.WriteLine(ex.Data["time"]);
                Console.WriteLine("获取更多异常信息帮助:{0}", ex.HelpLink);
                Console.WriteLine("---------------异常处于结束部分------------");
            }
            finally {
                Console.WriteLine("执行清理代码");
            }
            #endregion

     public class PcPrice
    {
        internal void Set(int n)
        {                                    
            //判断参数是否大于5000
            if (n >5000)
            {
                //创建自定义异常类的对象e
                HiPriceException e = new HiPriceException("电脑定价超过5000,顾客不满意请调整价格");
                //添加当前时间到e对象的Data属性中
                e.Data.Add("time", string.Format("异常发生的时间:{0}",DateTime.Now));
                //将帮助信息的Url赋值给e对象的HelpLink属性
                e.HelpLink = "www.baidu.com";
                throw e;
            }
            //判断参数是否大于3000
            else if(n<3000)
            {
                //创建自定义异常类的对象e
                HiPriceException e = new HiPriceException("电脑定价超过3000,顾客不满意请调整价格");
                //添加当前时间到e对象的Data属性中
                e.Data.Add("time", string.Format("异常发生的时间:{0}", DateTime.Now));
                //将帮助信息的Url赋值给e对象的HelpLink属性
                e.HelpLink = "www.baidu.com";
                throw e;
            }
            Console.WriteLine("这台电脑的定价{0}",n);
        }
    }

    /// <summary>
    /// 自定义异常类HiPriceException,并继承于ApplicationException
    /// </summary>
    class HiPriceException:ApplicationException
    {
        //默认构造函数
        internal HiPriceException() { }

        //重载构造函数,继承基类方法
        internal HiPriceException(string m) : base(m) { }

    }