簡體   English   中英

如何在C#中格式化Exception的堆棧跟蹤?

[英]How to format Exception's stack trace in C#?

顯示異常時(或更常見 - 當它轉換為String時)顯示堆棧跟蹤。 我想要做的是更改此類跟蹤中顯示的源代碼文件路徑的格式。

具體來說,我只想保留文件名(沒有完整路徑)或僅顯示以項目基本目錄開頭的路徑部分。 完整路徑通常是不必要的,並使整個消息混亂。

我怎樣才能做到這一點?

我問了一個類似的問題,雖然不完全相同,但是: 在C#中打印堆棧跟蹤信息

你能做的是:

var trace = new System.Diagnostics.StackTrace(exception);

它為您提供了一個StackTrace對象,為您提供所需的所有信息。 在我的情況下,它是關於避免必須處理本地化的異常文本,但我想你可以使用相同的方法來滿足您的需求。


編輯 :我注意到我已經對我的問題的接受答案添加了注釋,該問題與構造函數的“needFileInfo”參數有關。 我在這里看到這個構造函數: StackTrace(Exception e,bool fNeedFileInfo) ,我現在無法找到有問題的實際代碼,但我猜你需要將true傳遞給該參數。 我想實驗是關鍵。

換句話說,我猜代碼應該是這樣的:

var trace = new System.Diagnostics.StackTrace(exception, true);

查看System.Diagnostics.StackFrame類和GetFileName方法。 您可以編寫一個方法來獲取堆棧跟蹤以及可以在異常處理程序中調用的源文件的名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM