Ejemplo n.º 1
0
        /// <summary>
        /// 将生成验证码的代码拆分成若干个方法,并为其添加异常机制,要求能够:o显式的抛出一个自定义异常
        /// 捕获并包裹一个被抛出的异常,记入日志文件,然后再次抛出,o根据不同的异常,给用户相应的友好的异常提示
        /// 使用using释放文件资源
        /// </summary>
        public static void CaptchaInsertException(string custom = null)//需要自己传入一个验证码,要求不得大于4个字符
        {
            //主方法,生成画布添加背景颜色
            Bitmap   image   = new Bitmap(200, 100);
            Graphics drawing = Graphics.FromImage(image);

            drawing.Clear(Color.White);

            //添加随机种子
            Random random = new Random();

            //生成背景像素点
            Captcha.captchaBackGroundPixel(image, random);

            //生成背景干扰线条
            Captcha.captchaBackgroundDrawing(drawing, random);



            //为了捕获异常特意声明的一个Try catch
            try
            {
                if (custom.Length > 4)
                {//自定义的异常
                    throw new HomeworkException("传入的验证码请不要超过4个字符");
                }
                else
                {//输入正确就跑到正常的执行手段里面去。
                    Captcha.captchaMaker(random, drawing, image, custom);
                }
            }
            catch (HomeworkException Record)
            {
                string path = @"C:\Users\Administrator\source\repos\luckstack3\Captcha\Log.txt";
                using (StreamWriter writer = File.AppendText(path))
                {
                    DateTime date = DateTime.Now;//设置日志时间
                    string   time = date.ToString("yyyy-MM-dd HH:mm:ss");


                    //日志存放
                    //writer = File.AppendText(path);
                    writer.WriteLine("异常时间" + time);
                    writer.WriteLine("异常对象" + Record.Source);
                    writer.WriteLine("调用堆栈" + Record.StackTrace.Trim());
                    writer.WriteLine("调用堆栈" + Record.ToString());

                    writer.Flush();
                }

                //重新抛出
                throw new HomeworkException("传入的验证码请不要超过4个字符");
            }
            catch (Exception)
            {
                throw new Exception("正确传入4个字符的自定义验证码");
            }
            //生成随机验证码
            Captcha.captchaMaker(random, drawing, image);

            //存储图片
            image.Save(@"C:\Users\Administrator\source\repos\luckstack3\Captcha\Captcha.jpg", ImageFormat.Jpeg);
        }