Exception.ToString()不包含完整的StackTrace信息

时间:2016-02-09 08:40:27

标签: c# exception-handling

代码在调试模式下编译。 我抓住了一个Exception并打印出来:

catch (Exception ex)
{
    Trace.TraceError(ex.ToString());
}

我希望看到完整的堆栈跟踪,但我只得到一行:

  

System.NullReferenceException:未将对象引用设置为对象的实例。

     

在C:\ path \ Code.cs中的FullClassName.UpdateLink(FileVersione Obj):第137行

调用堆栈在哪里?

internal void UpdateLink(FileVersione Obj)
{
    TipoFile tf;
    JobManager.CommonClasses.BusinessObjects.Archivio.FileInfo fi;
    try
    {
        fi = Obj.FileInfo;      <--- Null exception here!!!
        tf = fi.TipoFile;     
        .......................
    }
    catch (Exception ex)
    {
        Trace.TraceError("UpdateLink Error: " + ex.ToString());
    }
}

调用该函数有两种方法:

 private void UpdateLinks()
        {
            FileVersione fv;
            while (true)
            {
                fv = (FileVersione)_UpdateLinksQueue.Dequeue();
                this.UpdateLink(fv);
            }
        }

OR:

 private void UpdateLinks(FileInfo file, bool recursive, int depth)
        {
            ServerDIFileVersione asfd;
            IEnumerable<FileLink> links;
            asfd = (ServerDIFileVersione)FileVersione.StdDataInterface;
            asfd.UpdateLink(file.VersioneAttuale);
            if (recursive && depth<10)
            {
                links = file.Relazioni;
                foreach (FileLink link in links)
                {
                    if (link.Figlio != null)
                        UpdateLinks(link.Figlio, recursive, ++depth);
                }

            }
        }

0 个答案:

没有答案