我有.Net控制台应用程序,可能会抛出Stackoverflow异常。 根据Hans Passant在此处的回答How does the well-known "Process is terminated due to StackOverflowException" screen appears,当应用程序因StackOverflow异常而失败时,它应返回COR_E_STACKOVERFLOW结果代码。
我查看了.net 2源代码,这是常量:
internal const int COR_E_STACKOVERFLOW = unchecked((int)0x800703E9);
StackOverflow的代码是这样的:
void DECLSPEC_NORETURN EEPolicy::HandleFatalStackOverflow(EXCEPTION_POINTERS *pExceptionInfo, BOOL fSkipDebugger)
{
// This is fatal error. We do not care about SO mode any more.
// All of the code from here on out is robust to any failures in any API's that are called.
....
DisplayStackOverflowException();
TerminateProcess(GetCurrentProcess(), COR_E_STACKOVERFLOW);
UNREACHABLE();
}
等于-2147023895。 (这是样本 - http://www.dotnetfiddle.net/1rAvoF)
我从另一个应用程序启动我的控制台应用程序,然后检查process.ExitCode
但是我得到的退出代码是-1073741571,它不等于stackoverflow异常代码。
为什么它返回不同的退出代码?