我发现如果我捕获异常e,e.innerException可能为null。
在catch块的任何可能情况下,e.StackTrace是否也可能为null?
try {
}
catch(Exception e)
{
//can e.StackTrace be null here?
}
答案 0 :(得分:15)
是
如果您创建new Exception()
并且不抛弃它,则除Data
和Message
之外的所有属性都将为空。
答案 1 :(得分:3)
证明StackTrace
在catch块中可以为null的示例同样无关紧要显示:
public class DerpException : Exception
{
public override string StackTrace
{
get { return null; }
}
}
答案 2 :(得分:0)
如果您使用exception.StackTrace
作为空值,则有可能
带有try-catch的函数的[HandleProcessCorruptedStateExceptions]
属性,用于捕获异常,以及是否从本机代码引发异常。
System.AccessViolationException
异常类型可能具有StackTrace
为空。
不确定这是否与Debug / Release构建和/或生成的pdb文件有关。 我在Release版本中观察到这种崩溃。