拋出這可能是一個調試器的問題,但在這裏有雲:時拋出定製的異常會立即陷入了同樣的catch塊是從
我有這樣一段代碼:
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引發關鍵字,所以也許它是我的調試器。
我正在使用SharpDevelop。
感謝, 丹麥
這只是調試器的工作。它捕獲任何未處理的異常。你期望發生什麼? – MarkJ
我曾期待它會向呼叫者冒泡,然後在那裏爆炸。 – Danedo
它調用調用堆棧尋找封閉的Try塊。如果沒有封閉Try塊,那麼你將得到未處理的異常行爲。這意味着如果您正在調試器*下運行*,調試器會將回調堆棧回退,以便向您顯示拋出異常的原始行。幫助您調試發生異常的原因。嘗試從獨立的EXE運行。它將以標準錯誤對話結束。我認爲你的代碼工作正常,只是調試器可能讓你感到困惑。 – MarkJ