1
Exception
對象具有StackTrace
屬性。但它只是一個字符串。從異常中獲取實際StackTrace對象
有沒有辦法從Exception
得到實際的System.Diagnostics.StackTrace
對象?
我問,因爲我從UnhandledExceptionEventHandler
獲取Exception對象,並且我無權訪問生成異常以獲取實際堆棧跟蹤的幀。
Exception
對象具有StackTrace
屬性。但它只是一個字符串。從異常中獲取實際StackTrace對象
有沒有辦法從Exception
得到實際的System.Diagnostics.StackTrace
對象?
我問,因爲我從UnhandledExceptionEventHandler
獲取Exception對象,並且我無權訪問生成異常以獲取實際堆棧跟蹤的幀。
try{
//some code
}
catch (Exception ex){
System.Diagnostics.StackTrace stackTrace = new System.Diagnostics.StackTrace(ex);
}
完美的作品!在'ex'之後加上',true'也可以獲得文件信息! – Vaccano
使用一些'StackTrace' [構造]的(https://msdn.microsoft.com/en-us/library/25h0kw08(V = vs.110)的.aspx)與'Exception'參數?例如'新的StackTrace(ex)'。 –
[This](http://stackoverflow.com/questions/21479762/exception-with-no-stack-trace-how)問題似乎相關;如果真的,你的堆棧跟蹤已經消失了,你需要修復任何'throw ex'調用。請注意,如果是這種情況,那麼@ IvanStoev的答案不應該工作,因爲'ex'已經缺少堆棧跟蹤,所以我不認爲'StackTrace'構造函數會找到任何要複製的東西。見[這裏](http://stackoverflow.com/questions/57383/in-c-how-can-i-rethrow-innerexception-without-losing-stack-trace)如何重新拋出異常而不會丟失在.NET 4.5+中的堆棧跟蹤。 – Quantic
@Quantic - 感謝您的迴應,但PALMERALE和IvenStoev的解決方案似乎效果很好。 – Vaccano