这可能是一个调试器问题,但这里有:
我有这段代码:
Private Function Connect() As Boolean
Try
sessionBegun = False
connectionOpen = False
rp = New RequestProcessor2()
rp.OpenConnection2("","EZSystem", QBXMLRPConnectionType.localQBD)
connectionOpen = True
ticket = rp.BeginSession("", QBFileMode.qbFileOpenDoNotCare)
sessionBegun = True
Return True
Catch e As COMException
exceptionHandler.HandleConnectionException(e)
**Throw New QuickBooksConnectionException(e.Message)**
End Try
End Function
我的意图是将低级别异常“转换”为更有意义的异常,所以我抛出了自己创建的异常。我想让它泡到一个我可以处理它的地方。
然而,正在发生的事情是我的调试器中断并告诉我抛出了类型“QuickBooksConnectionException”的异常。
我知道,我只是扔了它,你为什么要抓住它?
从我读过的内容来看,这应该可行,并且似乎没有类似的Java throws关键字,所以也许它是我的调试器。
我正在使用SharpDevelop。
谢谢, 戴恩
答案 0 :(得分:1)
如上所述,您的代码会抛出一个未处理的异常,这总是会导致调试器无法进行。您只需要在调用此方法的代码中捕获 QuickBooksConnectionException 。 (而且你是对的,C#中没有与 throws Java关键字相同的。)
答案 1 :(得分:1)
您可以更改调试器中断异常的设置。
答案 2 :(得分:0)
这只是调试器正在完成的工作。它通常会捕获任何未处理的异常。我认为你的代码运行正常,调试器可能让你感到困惑。
这是一个显示正在发生的事情的实验。完全删除Try-Catch块。运行代码&导致COMException。调试器将“捕获”它,因为它未处理,并突出显示抛出它的行。
异常冒泡调用堆栈,寻找封闭的Try块。如果没有封闭的Try块,则运行时会处理它。这意味着如果您在调试器下运行,调试器将回退调用堆栈,以便它可以显示抛出异常的原始行。帮助您调试异常发生的原因。尝试从没有调试器的独立EXE或网站运行。它将以标准错误对话终止。
以下是rules,用于确定调试器是否在异常中断。