我试图使用以下代码捕获异常详细信息,但它没有详细说明错误。
我试图从我们的ftp服务器下载一个文件,其代码类似于ftp类。找不到文件时,我触发上面的方法并传入异常。不幸的是,该方法印刷了以下内容:
Error occured and Error details as follows
Exception occured in file
Exception occured in method SyncRequestCallback
Exception occured in line & column number 0 0
这是我的代码。如何捕获异常详细信息(例如行号,抛出异常的方法等)?
public static string GetException(Exception ex)
{
//Get a StackTrace object for the exception
StackTrace st = new StackTrace(ex, true);
//Get the first stack frame
StackFrame frame = st.GetFrame(0);
//Get the file name
string fileName = frame.GetFileName();
//Get the method name
string methodName = frame.GetMethod().Name;
//Get the line number from the stack frame
int line = frame.GetFileLineNumber();
//Get the column number
int col = frame.GetFileColumnNumber();
string strBody = "Hi,<br/><br/>";
strBody = strBody + "Error occured and Error details as follows<br/>";
strBody = strBody + "Error message " + ex.Message + "<br/>";
strBody = strBody + "Exception occured in file " + fileName + "<br/>";
strBody = strBody + "Exception occured in method " + methodName + "<br/>";
strBody = strBody + "Exception occured in line & column number " + line + " " + col + "<br/><br/>Thanks";
return strBody;
}
由于
答案 0 :(得分:4)
为了获取更多信息,您需要部署在构建时生成的.pdb
个文件。这将允许您了解发生错误的特定行。
作为旁注,在我看来,你正在重新发明轮子,创造出如此复杂的逻辑记录。有很多框架可以帮助你做log4net。
答案 1 :(得分:1)
对异常调用ToString
通常会生成公共详细信息的可读版本。并且只显示异常可用的详细信息,因此如果应用程序未在调试模式下运行且没有相应的* .pdb文件(或者事后你没有附加它们) - 和符号加载 - 然后你无法获得详细的源信息。