有時,當.NET類方法發生異常時,該方法本身在內部調用一堆其他方法,但是其中一個方法發生錯誤。這使得堆棧跟蹤臃腫和凌亂,比所需「更無意義」的東西。有沒有辦法得到一個堆棧跟蹤停止在公共.NET方法導致的錯誤,並顯示所有內部的.NET方法?是否可以生成一個排除內部方法的.NET堆棧跟蹤?
一個例子是ADO.NET的ExecuteNonQuery()。內部調用像5-6個函數,並且直到第6個嵌套函數纔會發生異常,所以堆棧跟蹤顯示了所有那些我們無法做或不關心的內部事件。如果它在ExecuteNonQuery()處停下來,它會更好,更乾淨,因爲這是面向公衆的.NET方法。
是否有任何實際的原因?你可以抓到並重新拋出,但爲什麼? – Sinatr
你確定內部方法名稱是無意義的嗎?例如。如果'ExecuteNonQuery'拋出'NullReferenceException',你從哪裏開始看?對比如果內部方法名稱包含「參數」一詞,是否不能幫助您更快地放大應該查找的位置? –
您可以創建一個自定義的異常類並過濾出您不希望堆棧跟蹤的內容。 – PaulF