vb.net在崩溃时运行

时间:2014-07-15 15:06:13

标签: vb.net exception

我的程序在夜间运行大约10个小时,有时我醒来发现它已经崩溃(无论出于何种原因)。它通常是“程序名称”已停止工作,并且唯一的按钮是关闭程序。我已经尝试观看并等待它崩溃,但问题似乎很难重现(我无法全天候观看)。我在我的程序中使用了try和catch语句,可能存在问题,并告诉程序如果捕获异常就转储到文本文件中。但这似乎不够好。

TLDR:当程序中检测到异常(没有特定内容)时,是否可以告诉我的程序运行特定的函数,以便我可以将堆栈跟踪转储到文本文件中并稍后进行调查?

2 个答案:

答案 0 :(得分:4)

  

当检测到异常时,是否可以告诉我的程序运行特定功能......

是的,具体取决于您使用的平台:

  • 如果您有控制台应用程序,请在Try ... Catch周围放置一个大Sub Main

  • 如果您使用WPF,请向AppDomain或Dispatcher的UnhandledException事件添加事件处理程序。具体细节可以在以下问题中找到:

    WPF global exception handler

  • 在使用WinForms时,您还可以包装Sub Main(可能是自动生成的)或附加到AppDomain.UnhandledException,有关详细信息,请参阅此处:

    WinForms Global Exception Handling?

  • 为了完整起见,Web应用程序中的全局异常处理是在global.asax的Application_Error方法中完成的:

    How to catch unhandled exceptions in an asp.net application?

答案 1 :(得分:1)

这样做通常不是一个好主意。但是,您可以查看AppDomain.UnhandledException。这几乎仅限于一个域,您还将收到(可能)与您的程序无关的所有未处理异常的通知。

这通常用于类库,但我认为有点小提琴,你可能会让它工作。