/// <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); }