有关异常详情的问题c#

时间:2013-02-28 14:23:24

标签: c# exception exception-handling

我试图使用以下代码捕获异常详细信息,但它没有详细说明错误。

我试图从我们的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;
}

由于

2 个答案:

答案 0 :(得分:4)

为了获取更多信息,您需要部署在构建时生成的.pdb个文件。这将允许您了解发生错误的特定行。

作为旁注,在我看来,你正在重新发明轮子,创造出如此复杂的逻辑记录。有很多框架可以帮助你做log4net

答案 1 :(得分:1)

对异常调用ToString通常会生成公共详细信息的可读版本。并且只显示异常可用的详细信息,因此如果应用程序未在调试模式下运行且没有相应的* .pdb文件(或者事后你没有附加它们) - 和符号加载 - 然后你无法获得详细的源信息。