Timer的Elapsed中抛出异常,谁来接?

jzaicn 2013-12-13 02:03:35
请问c#中Timer的Elapsed响应函数中抛出异常,谁来接?


void initTimer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
...
throw (new ApplicationException("初始化连接modem失败,重复尝试失败"));
...
}


控制台中有输出
在 System.ApplicationException 中第一次偶然出现的“sms.exe”类型的异常
...全文
189 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Susiria 2013-12-13
  • 打赏
  • 举报
回复
可在应用程序入口处关联ThreadException 和UnhandledException 事件: [STAThread] static void Main() { Application.ThreadException += new System.Threading.ThreadExceptionEventHandler(Application_ThreadException); AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(CurrentDomain_UnhandledException); 。。。。。 然后,根据你所了解的异常的内容,在事件方法里判断: static void Application_ThreadException(object sender, System.Threading.ThreadExceptionEventArgs e) { string message = e.Exception.ToString(); if(message.StartWith("在 System.ApplicationException 中第一次偶然出现的")){ //
jzaicn 2013-12-13
  • 打赏
  • 举报
回复
谢谢楼上两位。结论,异步的东西无法通知主线程,除非用线程交互相关的设计。
飞小猪 2013-12-13
  • 打赏
  • 举报
回复
引用 5 楼 jzaicn 的回复:
[quote=引用 4 楼 wind_cloud2011 的回复:]
 try
            {
               
            }
            catch (Exception ex)
            {         
                  throw ex;
            }
直接在函数内部?!那就没啥意义了吧。我是想问在外面怎么捕捉到异常。 外面我调用a.init();的时候触发timer异步进行初始化,在这个异步的过程中,timer响应函数中抛出异常。例如初始化失败,那外面(主窗口)是不是就没办法捕捉到异常了?[/quote] 你可以用事件,timer里面抛异常的时候触发这个事件
wind_cloud2011 2013-12-13
  • 打赏
  • 举报
回复
也可放一个全局变量,让变量取得ex异常信息
wind_cloud2011 2013-12-13
  • 打赏
  • 举报
回复
在catch里写到log文件中
jzaicn 2013-12-13
  • 打赏
  • 举报
回复
引用 4 楼 wind_cloud2011 的回复:
 try
            {
               
            }
            catch (Exception ex)
            {         
                  throw ex;
            }
直接在函数内部?!那就没啥意义了吧。我是想问在外面怎么捕捉到异常。 外面我调用a.init();的时候触发timer异步进行初始化,在这个异步的过程中,timer响应函数中抛出异常。例如初始化失败,那外面(主窗口)是不是就没办法捕捉到异常了?
wind_cloud2011 2013-12-13
  • 打赏
  • 举报
回复
 try
            {
               
            }
            catch (Exception ex)
            {         
                  throw ex;
            }
jzaicn 2013-12-13
  • 打赏
  • 举报
回复
引用 1 楼 xiaozhu39505 的回复:
谁来接?什么意思
在什么地方try catch,才能捕捉到那个函数内部抛出的异常
jzaicn 2013-12-13
  • 打赏
  • 举报
回复
在什么地方try catch,才能捕捉到那个函数内部抛出的异常
飞小猪 2013-12-13
  • 打赏
  • 举报
回复
谁来接?什么意思

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧