如何防止第三方库中吞噬的异常触发 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 调试器

我会研究VS中的"只是我的代码"选项