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)
{
}
}
}
}
hereおよびhereに従って、[DebuggerHidden]
属性を使用して、スローされたすべての例外で中断するように指示された場合でも、デバッガーが飲み込まれた例外で停止するのを防ぐことができることを理解しています。これはTest_ThrowSwallowLocal()
. Test_ThrowSwalloThirdParty()
ただし、デバッガーが例外スローで中断し続けている瞬間に、エミュレートしようとしている独自の例外をスローして飲み込んでいるサードパーティのライブラリでコードを呼び出すときに、これを複製したいと思います。
ThirdPartyLibrary コードを編集せずにこれを回避する方法はありますか (簡単にはできません)。