我有一个带有一些DLL扩展的程序,它们在运行时加载。前端是WinForms中的CefSharp。但程序已经很大了,使用了其他一些第三方代码部分(我无法处理)并且该程序必须在远程客户商店运行而无需永久维护,我需要一个全局异常处理程序对于未捕获的异常,处理这些异常并将其记录下来进行分析。
我已经真正寻找过解决方案和教程,但没有什么对我有用。
mainform只是启动另一个程序集(并给他表单对象),这个程序集“就是这样”。例如将CefSharp-Browser添加到表单中。
我尝试在ApplicationEvents.vb
中添加一个处理Namespace My
Partial Friend Class MyApplication
Protected Overrides Function OnInitialize(ByVal commandLineArgs As System.Collections.ObjectModel.ReadOnlyCollection(Of String)) As Boolean
Me.MinimumSplashScreenDisplayTime = 0
AddHandler My.Application.UnhandledException, AddressOf UnhandledExceptionHandler
Return MyBase.OnInitialize(commandLineArgs)
End Function
Public Sub UnhandledExceptionHandler(ByVal sender As Object, ByVal e As Microsoft.VisualBasic.ApplicationServices.UnhandledExceptionEventArgs) Handles Me.UnhandledException, MyBase.UnhandledException, MyClass.UnhandledException
Dim errstr = $"Message: {vbNewLine}
{e.Exception.Message}{vbNewLine}
{vbNewLine}
InnerMessage: {vbNewLine}
{e.Exception.InnerException.Message}{vbNewLine}
{vbNewLine}
Stacktrace: {vbNewLine}
{e.Exception.StackTrace.ToString()}{vbNewLine}"
MsgBox($"Aa uncaught exception was thrwon! {vbNewLine} {vbNewLine} {errstr}")
End Sub
End Class
End Namespace
的方法
UnhandledExceptionHandler
但是永远不会调用此方法 CloseableHttpClient httpclient = HttpClients.createDefault();
// Create a local instance of cookie store
CookieStore cookieStore = new BasicCookieStore();
// Create local HTTP context
HttpClientContext localContext = HttpClientContext.create();
// Bind custom cookie store to the local context
localContext.setCookieStore(cookieStore);
//Your PUT request goes here
CloseableHttpResponse response = httpClient.execute(putRequest,localContext);
,即使在调试器中被标记为未捕获的抛出异常并导致调试暂停。
所以,如果我的问题不明确:任何人都可以帮助我,或者可以向我解释,我犯了哪个错误,我可能在哪里做出错误的假设,或者这样一个未被捕获的异常处理程序是如何工作的。
在Visual Studio 2017的vb.net中
答案 0 :(得分:0)
这就是我刚才所做的,以证明它能够正常运作:
Button
并处理其Click
事件。IO.File.OpenRead("this file does not exist")
。MessageBox.Show(e.Exception.ToString())
。Button
。请注意,调试器会通知您异常。Button
。请注意,您的通知代码已执行。