gpt4 book ai didi

c# - 优雅地处理 .NET Core 中损坏的状态异常

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

我基本上有一个副本 question但对于 .NET Core。

我有核心控制台应用程序:

class Program
{
static void DoSomeAccessViolation()
{
// if you have any questions about why this throws,
// the answer is "42", of course

var ptr = new IntPtr(42);
Marshal.StructureToPtr(42, ptr, true);
}

[SecurityCritical]
[HandleProcessCorruptedStateExceptions]
static void Main(string[] args)
{
try
{
DoSomeAccessViolation();
}
catch (Exception ex)
{
Console.Error.WriteLine(ex);
}
}
}

我尝试添加一个 Settings.setting 文件

<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="ConsoleApp2" GeneratedClassName="Settings1">
<Profiles />
<Settings>
<Setting Name="legacyCorruptedStateExceptionsPolicy" Type="System.Boolean" Scope="Application">
<Value Profile="(Default)">True</Value>
</Setting>
</Settings>
</SettingsFile>

并且我尝试根据 docs 设置环境变量:

C:\>set COMPlus_legacyCorruptedStateExceptionsPolicy=1
C:\>dotnet run

C:\>set COMPlus_legacyCorruptedStateExceptionsPolicy=true
C:\>dotnet run

(在 Windows 上)。但没有任何效果,应用程序总是在不打印异常的情况下严重崩溃。

最佳答案

我一直在挖掘这个主题的一些背景,按时间顺序......

dotnet/coreclr Issue #9045 : 剥离损坏的状态异常处理

dotnet/coreclr PR #10957 : 不要尊重属性 HandleProcessCorruptedStateExceptions

dotnet/coreclr Issue #19192 : 无法在托管代码中捕获从 native Linux 代码抛出的任何用户异常

我目前是 SOL。必须创建某种非托管包装器来捕获外部 CSE。

你可以试试 few more options ,特别是 FailFastOnCorruptedStateException 与 legacyCorruptedStateExceptionsPolicy 的结合。

关于c# - 优雅地处理 .NET Core 中损坏的状态异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48682489/

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