SQLException對象的「鏈」背後的語義是什麼,它與Throwable
類中的getCause
方法形成的類似(隱式)鏈有什麼不同?chained java.lang.SQLException實例與Throwable#getCause
由於SQLException
也是Throwable
,那個類的一個實例可以具有兩個這樣的「鏈:
- 通過
getNextException()
呼叫的序列所定義的一個 - 直到null是最終返回的其他 - 定義通過一系列
getCause()
來電 - 直到零爲止最終返回
......在這種情況下,這兩條鏈如何相互關聯?
那麼您是說SQLException#iterator方法首先執行深度優先遍歷異常樹?因爲它實際上是一棵樹,理論上SQLException實例的getCause(在某個深度)可能會返回另一個SQLException,並帶有自己的鏈式異常。現在,我只希望方法能夠在deptn(如Apache lang3 ExceptionUtils#getStackTrace中繼續挖掘#getCause方法)和廣度(沿着鏈式SQLExceptions)中對所有異常樹進行字符串化,以便我可以記錄單個全部異常包含'String'對象。 –
@MarcusJuniusBrutus查看['SQLException']的源代碼(http://grepcode.com/file/repository.grepcode.com/java/root/jdk/openjdk/7-b147/java/sql/SQLException.java? av = f#314),它不會從原因迭代'下一個SQLException鏈'。它只會在最初的'SQLException'和迭代初始鏈中每個'SQLException'的原因鏈上遍歷'getNextException'鏈。 –