我想处理异常,但它不起作用! 最新的问题?如何处理System.Threading.Timer中的异常
让我们说在Main中我使用任何参数运行SetUpTimer。
private void SetUpTimer(TimeSpan alertTime, string name)
{
DateTime current = DateTime.Now;
TimeSpan timeToGo = alertTime - current.TimeOfDay;
try
{
Timer timer = new Timer(x => RunReportTask(name),null, timeToGo, Timeout.InfiniteTimeSpan));
catch(Exception e)
{
Console.WriteLine("Log Exception....")
}
}
private void RunReportTask(string name)
{
Console.WriteLine("\r\n\r\nSTART Task \t\tReport: " + name);
//DELAY 25 sec
Task.Delay(25000);
if (name.Equals("Report A") || name.Equals("Report D") || name.Equals("Report F"))
{
throw new Exception("Task failed!!!");
}
else
{
Console.WriteLine("Task: \t\t" + name + "\tDONE.");
}
}
所以现在如果我执行它会抛出一个异常与报告名称A,D,F。但它不会抓住它,但为什么?我能做些什么呢?
您是尝试/捕获仅创建计时器,操作的不执行。你可以把所有的代码放在try/catch中的Action“RunReportTask”中,或者你可以在你的应用中注册一个[uncaughtExceptionHandler](https://csharp.2000things.com/tag/unhandled-exceptions/)。 – Fildor
将try/catch放在抛出异常的同一个方法中是没有意义的,但这就是所有可以用你发布的代码完成的方法。据推测,随着更多的信息,它将清楚你如何处理错误,但这些信息不在这里,所以这个问题有太多可能的答案。 –