如何防止第三方库中吞噬的异常触发 VS 调试器
本文关键字:异常 VS 调试器 吞噬 何防止 第三方 | 更新日期: 2023-09-27 18:31:23
using System;
using System.Diagnostics;
using NUnit.Framework;
namespace TestExperiment
{
[TestFixture]
internal class TestAAA
{
[Test]
public void Test_ThrowSwallowThirdParty()
{
ThrowSwallowThirdParty();
}
[Test]
public void Test_ThrowSwallowLocal()
{
ThrowSwallowLocal();
}
[DebuggerStepThrough]
[DebuggerNonUserCode]
[DebuggerHidden]
public void ThrowSwallowThirdParty()
{
ThirdPartyLibrary.ThrowEmbedded();
}
[DebuggerStepThrough]
[DebuggerNonUserCode]
[DebuggerHidden]
public void ThrowSwallowLocal()
{
try
{
throw new Exception();
}
catch (Exception e)
{
}
}
}
// imagine this is a 3rd party library provided in a dll which I am referencing
internal static class ThirdPartyLibrary
{
public static void ThrowEmbedded()
{
try
{
throw new Exception();
}
catch (Exception e)
{
}
}
}
}
根据这里和这里,我知道您可以使用 [DebuggerHidden]
属性来防止调试器在吞噬的异常处停止,即使它被告知在所有抛出的异常上中断。这适用于Test_ThrowSwallowLocal()
.但是,我想在调用第三方库中的代码时复制这一点,该库正在抛出并吞噬自己的异常 - 我正在尝试在Test_ThrowSwalloThirdParty()
中模拟 - 目前调试器继续在异常抛出处中断。
有没有办法在不编辑第三方库代码的情况下避免这种情况(我不容易做到?
我会研究VS中的"只是我的代码"选项