1、全程序进行异常捕获:
static void Main() { try { RunEntry(); } catch(Exception e) { Console.WriteLine(e); } } static void RunEntry() { //功能执行处理 }
2、方案一不一定能捕获错误信息,比如你说的,十有八九就捕获不了,此时可以查看系统日志。
谢谢啦 我试过了 没有作用 问下 怎么在程序中扑捉多线程 try{}catch{}未能扑捉到的异常?
@甘为愚公: 系统日志里肯定有(事件查看器)
@笨笨蜗牛: 系统日志里没有找到相关记录,一个程序同时运行了两个 操作不同的数据库。这两个程序同时出来了上面的情况 …… 愚昧中 ……不知道从何处找到解决方案
@甘为愚公: 那就奇怪了。.NET程序,如果遇到系统致命错误,确实是在TRY-CATCH里捕捉不到,但一般都能在事件查看器里找到。
可能你这个错误更严重了吧,连系统都捕获不了:)
参考Catching Unhandled Exceptions [C#]中的代码捕捉一下未处理异常:
static void Main() { Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.ThreadException += new ThreadExceptionEventHandler(Application_ThreadException); AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); Application.Run(new Form1()); } static void Application_ThreadException(object sender, ThreadExceptionEventArgs e) { MessageBox.Show(e.Exception.Message, "Unhandled Thread Exception"); // here you can log the exception ... } static void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e) { MessageBox.Show((e.ExceptionObject as Exception).Message, "Unhandled UI Exception"); // here you can log the exception ... }
多加几个记录日志的点。
基本上可以断定是进行数据查询的时候量大导致的超时,你可以把超时时间设置到最大试试。或者优化一下语句,把一个大的查询分拆成几个小的查询。