首页 新闻 会员 周边 捐助

由于工作需要,我使用C#制作了一个控制台程序,定期处理数据库中的一些信息。

0
悬赏园豆:5 [待解决问题]
由于工作需要,我使用C#制作了一个控制台程序,定期处理数据库中的一些信息。 

以前一切正常,即便是出现错误也会有错误提示。但是最近出现了奇怪的问题,偶尔会莫名其妙的终止程序,没有任何的提示。请高手指导一下,为什么会出现这样的问题,如果有错误,如何能够显示出来? 
 
 
常想一二,不思八九的主页 常想一二,不思八九 | 菜鸟二级 | 园豆:204
提问于:2012-06-05 16:17
< >
分享
所有回答(3)
0

1、全程序进行异常捕获:

static void Main()
{
    try
    {
        RunEntry();
    }
    catch(Exception e)
    {
        Console.WriteLine(e);
    }
}

static void RunEntry()
{
    //功能执行处理
}

2、方案一不一定能捕获错误信息,比如你说的,十有八九就捕获不了,此时可以查看系统日志。

无之无 | 园豆:5095 (大侠五级) | 2012-06-05 16:23

谢谢啦 我试过了 没有作用 问下  怎么在程序中扑捉多线程 try{}catch{}未能扑捉到的异常?

@甘为愚公: 系统日志里肯定有(事件查看器)

支持(0) 反对(0) 无之无 | 园豆:5095 (大侠五级) | 2012-06-05 17:13

@笨笨蜗牛: 系统日志里没有找到相关记录,一个程序同时运行了两个 操作不同的数据库。这两个程序同时出来了上面的情况 …… 愚昧中 ……不知道从何处找到解决方案

@甘为愚公: 那就奇怪了。.NET程序,如果遇到系统致命错误,确实是在TRY-CATCH里捕捉不到,但一般都能在事件查看器里找到。

可能你这个错误更严重了吧,连系统都捕获不了:)

支持(0) 反对(0) 无之无 | 园豆:5095 (大侠五级) | 2012-06-05 17:24
0

参考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 ...
}
dudu | 园豆:30559 (高人七级) | 2012-06-05 17:52
0

多加几个记录日志的点。

 

基本上可以断定是进行数据查询的时候量大导致的超时,你可以把超时时间设置到最大试试。或者优化一下语句,把一个大的查询分拆成几个小的查询。

nevgip | 园豆:188 (初学一级) | 2012-06-06 16:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册