2011-03-24 22 views
6

是否可以從異常對象中提取類名和文件名?從異常中提取類和文件名

我期待將更好的日誌記錄集成到我的應用程序中,並且我想包括髮生異常的位置的詳細信息。

在MVC中,Stacktrace不返回類名稱的文件名&,並且我在查找這些文件的位置方面有點遺憾。

感謝

回答

18

您可以創建一個異常對象StackTrace對象。它將包括StackFrame這個例外信息。然後你可以找到文件和方法名稱,位置以及它們是否可用。當然這應該不用說了,但只有在你編譯你的程序集包含調試符號(我認爲可以在MVC中可用)時,所有這些都可用

catch (Exception ex) 
{ 
    var st = new StackTrace(ex, true); // create the stack trace 
    var query = st.GetFrames()   // get the frames 
        .Select(frame => new 
        {     // get the info 
         FileName = frame.GetFileName(), 
         LineNumber = frame.GetFileLineNumber(), 
         ColumnNumber = frame.GetFileColumnNumber(), 
         Method = frame.GetMethod(), 
         Class = frame.GetMethod().DeclaringType, 
        }); 
    // log the information obtained from the query 
} 
+0

好的工作夥伴! – 2013-08-22 09:37:56