应用程序似乎没有捕获到异常

时间:2018-09-27 08:25:42

标签: c# .net exception-handling

我有一个c#控制台应用程序。我也有Windows任务计划程序,我每天早上都用来执行我的exe文件。

我放置了一个try catch块(如下所示)以捕获任何错误并将异常写入文本文件。

try块中的实际过程将创建一个excel实例,并从工作簿中读取一些数据。该代码正常工作。但是,当它失败时,错误似乎永远不会被捕获。

我还有其他应用程序,这些应用程序在catch块中使用相同的代码来输出异常,并且知道该部分可以工作。似乎没有发现异常。我可以看到预定的任务已启动文件。

更新

我已经检查了事件查看器(感谢下面的评论),可以看到任务已成功启动

 class Program
{
    static void Main(string[] args)
    {
        try
        {
            // do some work
        }
        catch(Exception ex)
        {
            // write output to log file
        }
    }
  }

1 个答案:

答案 0 :(得分:0)

如果excel创建过程在与主线程不同的线程或线程的任何部分上,则try-catch块将不会捕获该异常,因此您需要使用UnhandledException

基于此https://stackoverflow.com/a/3133249/2696230

将代码调整为以下内容:

class Program
{
    static void Main(string[] args)
    {
           System.AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionTrapper;
        try
        {

            // do some work
        }
        catch(Exception ex)
        {
            // write output to log file
        }
    }

    static void UnhandledExceptionTrapper(object sender, UnhandledExceptionEventArgs e) {
      // handle the expception
    }
  }