当前位置: 首页 > news >正文

怎样用godaddy建设一个网站地方网站总结

怎样用godaddy建设一个网站,地方网站总结,网站优化内链怎么做,网络规划设计师月薪多少前几天做CA签名这个需求时发现一个很诡异的事情#xff0c;CA签名调用的接口是由另外一个开发部门的同事(比较难沟通的那种人)封装并提供到我们这边的。我们这边只需要把数据准备好#xff0c;然后调他封装的接口即可完成签名操作。但在测试过程中#xff0c;发现他提供的接…前几天做CA签名这个需求时发现一个很诡异的事情CA签名调用的接口是由另外一个开发部门的同事(比较难沟通的那种人)封装并提供到我们这边的。我们这边只需要把数据准备好然后调他封装的接口即可完成签名操作。但在测试过程中发现他提供的接口在某些边界条件时会报错。通过反编译调试后把报错的堆栈及要如何修改都发给了那个同事但是他没鸟我项目经理他不懂技术也不想管这个事情(所以以后跳槽一定要跳到一个好一点的团队)。我该做的都已经做了没办法毕竟是我负责的功能需求到时候报错了也是第一时间找到我。我这边就try catch捕获一下异常呗神奇的事情出现了没捕获到而是被Application.ThreadException事件注册的方法给捕获到了(这里捕获这个词不算很恰当即触发Application.ThreadException事件对应的方法)。我们都知道UI线程中未捕获的异常如果在程序的Main方法入口注册了Application.ThreadException事件对应的方法UI线程发生异常如果未捕获并处理该异常就会触发Application.ThreadException事件对应的方法。这就说明我try catch不到他那个接口的异常信息。 我这边处理的业务逻辑代码大概可以描述为 通过反编译看了一下调用封装CA签名接口的代码块对应的代码它的大概处理流程是这样的先通过Spring.Net接口调用CA签名的业务逻辑记为业务逻辑A业务逻辑A的实现流程如下通过反射拿到对应的CA签名的实现类(因为我们这边的代码需要兼容多个CA签名的厂商)我们这边对接的是网政通的CA我这边就只介绍一下它的大概流程先获取提供接口的CA用户的用户信息记为步骤1如果有用户信息则需要再次调用获取用户token信息接口记为步骤2获取token用户信息成功后再调用获取CA用户二维码信息的接口获取到签章并以二维码的形式显示出来让用户进行扫码操作记为步骤3。如果前面的步骤1不成功后面的步骤23都不用继续操作了直接返回CA签名失败走普通签名逻辑。同事的接口报错就发生在步骤1中没有CA用户信息时某些代码逻辑写得不够严谨就报错了。 至于我这边为何try catch步骤1中发生的异常信息我做了如下的猜测并进行了验证 1   是不是spring.net的框架把它给处理了结合前面使用过spring.net的经验排除了这种可能性 2   是不是被反射的方法里面报错调用方就抓不到异常不太确定那就用代码验证一下后面验证过了反射的虽然拿不到具体的报错堆栈信息但还是能通过try catch捕获到异常信息的。 3  是不是他的代码里面有我不知道的异常处理方式但是看了好久也没看出哪里有特别的地方 4  是不是在不同的AppDomain的异常就捕获不到后面也尝试过了也是能捕获的 前面的猜测无果后就一路在网上查询C#中try catch不到异常的情况 网上说的情况(未验证)有说调用非托管的代码就捕获不到异常 其它靠谱一点的捕获不到异常的情况 文章链接1 (未做验证)Exception not caught using catch block StackOverflowException堆栈溢出异常 ThreadAbortedException线程停止异常 OutOfMemoryException堆栈溢出异常 ExcutionEngineException执行引擎异常 BadImageFormatException错误图片类型异常 文章链接2 (未做验证)The Uncatchable Exception 情况1出现死递归导致内存异常的异常 情况2处理的异常中人工调用了Environment.FailFast捕获不到异常程序直接退出 不过都不是我要的解决方案当看到Environment.FailFast时突然灵光一闪是不是winform框架给捕获了然后再手工调用某个方法会触发Application.ThreadException事件对应的方法。有了思路后再来反调试代码发现同事重写了winfrom窗体的OnLoad方法在重新的OnLoad方法中完成步骤1操作而在反编译调试中看到winfrom窗体调用OnLoad方法的调用方捕获了异常并调用Application.OnException触发Application.ThreadException事件对应的方法如下图 下面我们就一起验证一下这种情况 测试环境 .net framework 4.0 visual studio 2017 具体步骤如下 1   新增名为TestMain的winfrom项目 2   编辑默认的Program类如下 using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms;namespace TestMain {static class Program{/// summary/// 应用程序的主入口点。/// /summary[STAThread]static void Main(){Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.ThreadException Application_ThreadException;Application.Run(new Form1());}private static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e){MessageBox.Show(Main方法中的Application_Thread输出,详细错误信息如下: e.Exception.Message e.Exception.StackTrace);}} }这里我注册了Application.ThreadException事件回调的方法Application_ThreadException如果UI线程中有没有处理的异常就会触发这个方法。 3  新增winform窗体名为QRCodeFrm对应的UI界面设计如下 对应的后台代码如下 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms;namespace TestMain {public partial class QRCodeFrm : Form{public QRCodeFrm(){InitializeComponent();}protected override void OnLoad(EventArgs e){bool flag true;if (flag){int a 1;int b 0;//这里会抛出异常int c a / b;}}} }在这里我们重写了OnLoad方法然后再进行a/b的除以0操作这里运行时会报异常 4   在默认的Form1窗体中拖入一个按钮UI界面如下图 button1按钮对应的逻辑如下 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Reflection; using System.Text; using System.Threading; using System.Windows.Forms; using TestApi;namespace TestMain {public partial class Form1 : Form{public Form1(){InitializeComponent();}private void button1_Click(object sender, EventArgs e){try{QRCodeFrm frm new QRCodeFrm();frm.ShowDialog();}catch (Exception ex){MessageBox.Show(捕获到异常,异常信息如下:ex.Messageex.StackTrace);}}} }在button1_Click我们进行捕获异常 5  生成项目并运行结果如下 可以看到Application.ThreadException事件回调的方法Application_ThreadException已经被调用接着后弹出QRCodeFrm对应的窗体如下图 可以看到已经按照猜想那样进行了输出显示。 回到最初的那个问题我们要怎么处理才能捕获到同事接口的那个异常信息呢有个不是很靠谱的方法是我们在合适的地方重新注册Application.ThreadException事件方法我们都知道通过的方式注册的Application.ThreadException事件方法前面已经注册过的事件方法就会被覆盖。修改前面演示的例子中的Form1并编辑如下 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Reflection; using System.Text; using System.Threading; using System.Windows.Forms; using TestApi;namespace TestMain {public partial class Form1 : Form{bool isCatch false;string errorMessage string.Empty;public Form1(){InitializeComponent();Application.ThreadException New_Application_ThreadException;}private void New_Application_ThreadException(object sender, ThreadExceptionEventArgs e){errorMessage e.Exception.Message e.Exception.StackTrace;isCatch true;}private void button1_Click(object sender, EventArgs e){try{QRCodeFrm frm new QRCodeFrm();frm.ShowDialog();}catch (Exception ex){MessageBox.Show(捕获到异常,异常信息如下:ex.Messageex.StackTrace);}if (isCatch){MessageBox.Show(被捕获的异常:errorMessage);}}}}运行结果如下 接着会弹出粗我提示框如下 可以看到Main方法中注册的Application.ThreadException事件方法的已经被新注册的方法给覆盖了 注意这种解决方案风险比较大我这边新增了一个参数进行控制是否进行Application.ThreadException事件方法的重新注册等同事修改了代码我这边就会把参数进行关闭这算是留了一手吧 本文的内容到此结束内容仅代表个人观点如有写得不对的地方望指正。
http://wiki.neutronadmin.com/news/44662/

相关文章:

  • 360度网站模板云南建设注册考试中心网站
  • 西安企业网站开发哪家好摄影网站建设开题报告
  • 政务网站建设原则岳阳建设公司网站
  • 中咨城建设计有限公司 网站智能网站推广优化
  • 行业网站联盟电商可以从事的行业有哪些
  • 如何在百度云上建设网站wordpress 大学 1.3
  • 报名网站建设费用价格怎么做网站教程+用的工具
  • 宣传型网站建设积分商城系统
  • 培训 网站 模板数据推广是干什么的
  • 深圳市网站建设外包公司排名o2o网站线上
  • 三站合一 网站建设wordpress 手机端异常
  • 网站dns解析医疗企业vi设计公司
  • 网站主题网wordpress查询次数
  • 做政务网站电子商务就是网络营销
  • 晋中建设集团网站手机制作网站免费
  • 容易导致网站作弊的几个嫌疑wordpress 访问密码
  • 开发app的网站有哪些seo专业培训学费多少钱
  • 网页游戏网站快手河北邢台特色美食
  • 源码之家免费济南网络优化推广
  • 外贸接单网站如何修改网站
  • 那些网站能够做推广wordpress收录主题
  • 羽贝网站建设网站开发使用软件有哪些
  • 怎样建设自己的视频网站首页vue做的网站域名汇总
  • 保定哪家做网站公司好工地建筑劳务公司招工平台
  • 导航类网站模板网站的专题怎么做
  • 大连网站开发 简维科技网站线框
  • 如何做网站推广精宝塔有WordPress
  • 找网站做外链是什么意思品牌网站建设只询大蝌蚪
  • 网站建设推广浩森宇特室内设计培训课程
  • 建设银行的登录网站石家庄网站建设外包公司排名