c# – 收集崩溃数据的最佳方法是什么?
发布时间:2020-12-15 08:27:51 所属栏目:百科 来源:网络整理
导读:因此,我试图从程序中自动收集数据的概念出售 – 即弹出一个对话框,要求用户在出现问题时发送报告. 我在MS Visual Studio C#中工作. 从实现的角度来看,在我的主program.cs文件中放置一个try / catch循环是否有意义?像这样: try { Application.Run(new myMai
因此,我试图从程序中自动收集数据的概念出售 – 即弹出一个对话框,要求用户在出现问题时发送报告.
我在MS Visual Studio C#中工作. 从实现的角度来看,在我的主program.cs文件中放置一个try / catch循环是否有意义?像这样: try { Application.Run(new myMainForm()); } catch (Exception ex) { //the code to build the report I want to send and to //pop up the Problem Report form and ask the user to send } 或者在整个代码段中放置try / catch循环以捕获更具体的异常类型是否有意义? (我想的不是因为这是一个新的应用程序,并且提出更具体的异常捕获意味着我知道会出现什么问题……我不知道,这就是为什么以上对我来说似乎有意义.) -Adeena 解决方法
我认为你是对的,你不会知道会出现什么问题,这就是重点.
但是,您可以考虑为ThreadException事件添加处理程序. 上面的代码可以工作,但是有些情况下多线程可能是这些代码的问题,因为并非所有Windows窗体程序中的代码都将在主Application.Run循环线程中运行. 以下是链接文章中的示例代码: [STAThread] static void Main() { System.Windows.Forms.Application.ThreadException += new ThreadExceptionEventHandler(ReportError); System.Windows.Forms.Application.Run(new MainForm()); } private static void ReportError(object sender,ThreadExceptionEventArgs e) { using (ReportErrorDialog errorDlg = new ReportErrorDialog(e.Exception)) { errorDlg.ShowDialog(); } } 更多文档on MSDN. 在一个小问题上,使用ThreadException事件还允许主消息循环继续运行,以防异常不是致命的(即容错方案),而try / catch方法可能要求您重新启动主消息循环,这可能引起副作用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |