以下是应该产生第一次机会异常的代码。
class MyClass
{
public string SomeField { get; set; }
}
class Program
{
static void Main(string[] args)
{
try
{
Print(null);
}
catch { }
}
static void Print(MyClass myclass)
{
Console.WriteLine(myclass.SomeField);
}
}
我设置ProcDump来捕获故障转储,如下所示。
ProcDump -ma MyApplication.exe
据我了解,此命令应捕获第一次机会和第二次更改异常。但是上面的代码我没有任何异常。如果从我的代码中删除catch块,那么我确实得到一个转储文件,但应该是第二次机会异常。任何想法为什么我没有得到任何崩溃转储第一次机会?
答案 0 :(得分:2)
你没有正确使用它,告诉你并不害羞。将您的代码更改为:
static void Main(string[] args) {
Console.WriteLine("Okay, start ProcDump now and press Enter");
Console.ReadLine();
try {
Print(null);
}
catch { }
}
将DebugDiag视为替代方案。