我有一个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
}
}
}
答案 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
}
}