gpt4 book ai didi

c# - C# 控制台应用程序中未处理的异常导致 AppCrash

转载 作者:行者123 更新时间:2023-11-30 22:23:27 25 4
gpt4 key购买 nike

我有一个在 Visual Studio 2010 中构建的 Windows 控制台应用程序,它一直在崩溃,但是 visual studio 调试工具和我的代码中的 try/catch 语句都没有捕获到该错误。

我已设法在我的系统上找到 WER 文件,并希望能够理解该文件的内容,以便我可以准确查明导致未处理异常的原因。

如果有人能就如何使用以下信息找到导致我出现此问题的过程以及异常可能是什么提供一些想法,我将不胜感激...

WER文件中的信息是:

Version=1
EventType=APPCRASH
EventTime=129973086237604286
ReportType=2
Consent=1
ReportIdentifier=91331e8b-2dc8-11e2-977b-080027f7e5bb
IntegratorReportIdentifier=91331e8a-2dc8-11e2-977b-080027f7e5bb
WOW64=1
Response.type=4
Sig[0].Name=Application Name
Sig[0].Value=SAGE_TESTING.vshost.exe
Sig[1].Name=Application Version
Sig[1].Value=10.0.30319.1
Sig[2].Name=Application Timestamp
Sig[2].Value=4ba2084b
Sig[3].Name=Fault Module Name
Sig[3].Value=ntdll.dll
Sig[4].Name=Fault Module Version
Sig[4].Value=6.1.7600.16385
Sig[5].Name=Fault Module Timestamp
Sig[5].Value=4a5bdb3b
Sig[6].Name=Exception Code
Sig[6].Value=c015000f
Sig[7].Name=Exception Offset
Sig[7].Value=000845bb
DynamicSig[1].Name=OS Version
DynamicSig[1].Value=6.1.7600.2.0.0.272.7
DynamicSig[2].Name=Locale ID
DynamicSig[2].Value=2057
DynamicSig[22].Name=Additional Information 1
DynamicSig[22].Value=0a9e
DynamicSig[23].Name=Additional Information 2
DynamicSig[23].Value=0a9e372d3b4ad19135b953a78882e789
DynamicSig[24].Name=Additional Information 3
DynamicSig[24].Value=0a9e
DynamicSig[25].Name=Additional Information 4
DynamicSig[25].Value=0a9e372d3b4ad19135b953a78882e789

这是我认为导致抛出异常的代码部分:

//Data from the project linked to the split data
if (oSplitData.Project != null)
{
oProject = oSplitData.Project as SageDataObject190.Project;

oBasicDetail.ProjectID = oProject.ProjectID;
oBasicDetail.ProjectReference = oProject.Reference.ToString();
}
else
{
oBasicDetail.ProjectID = -1;
oBasicDetail.ProjectReference = "NO_PROJECT";
}

为了补充以上所有内容,我似乎发现了一个普遍的异常被抛出,但它对我没有太大帮助 - 如果有人能对此有所了解,那就太好了:

Unhandled exception at 0x78bc7361 in SAGE_TESTING.exe: 0xC0000005: Access violation reading location 0xfeeefeee.

最佳答案

如果您的程序是多线程的,并且在生成的线程之一中抛出异常,则可能不会捕获异常,具体取决于您在程序中如何处理异常。

您可以像这样添加一个包罗万象的异常处理程序:

class Program 
{
static void Main(string[] args)
{
AppDomain.CurrentDomain.UnhandledException += UnhandledExceptionHandler;
// Your code here
}

static void UnhandledExceptionHandler(object sender, UnhandledExceptionEventArgs e)
{
Console.WriteLine(e.ExceptionObject.ToString());
Environment.Exit(1);
}
}

更新

根据您发布的代码,这里有一些要看的地方

  • 在您发布的代码周围放置一个 try/catch block 。
  • 您确定 oSplitData 不为空吗?
  • 在下一行中,如果 oSplitData.Project 不是 SageDataObject190.Project 类型,则 oProject 将为null。测试 null

    oProject = oSplitData.Project as SageDataObject190.Project;

关于c# - C# 控制台应用程序中未处理的异常导致 AppCrash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13368272/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com