Ответ 1
Класс DebuggerNonUserCodeAttribute
Как и в случае с .NET 2.0, если вы отметите метод с атрибутом [ DebuggerNonUserCode], отладчик будет пропустите первые исключения в нем.
Цитата из ссылки MSDN (выделено мной мое):
Участники которые не являются частью кода специально созданный пользователем, может усложняют процесс отладки. Этот атрибут подавляет отображение этих вспомогательных типов и членов в окно отладчика и автоматически шаги, а не в, дизайнер предоставил код.
Не существует поведения во время выполнения, кроме отладки, связанного с этим атрибутом.
Однако, если у вас есть только один метод с определенными строками, предназначенными для включения в механизм обработки исключительных ситуаций Visual Studio, и другие строки, которые должны быть исключены, скорее всего, не будет решения на этом уровне детализации. Вы всегда можете реорганизовать большой метод на несколько методов и использовать атрибут для избранных.
Дополнительная информация...
Пример использования этой статьи
using System.Diagnostics;
using XL = Microsoft.Office.Interop.Excel;
public static class WorkbookExtensions
{
[DebuggerNonUserCode]
public static bool TryGetWorksheet(this XL.Workbook wb, string worksheetName, out XL.Worksheet retrievedWorksheet)
{
bool exists = false;
retrievedWorksheet = null;
try
{
retrievedWorksheet = GetWorksheet(wb, worksheetName);
exists = retrievedWorksheet != null;
}
catch(COMException)
{
exists = false;
}
return exists;
}
[DebuggerNonUserCode]
public static XL.Worksheet GetWorksheet(this XL.Workbook wb, string worksheetName)
{
return wb.Worksheets.get_Item(worksheetName) as XL.Worksheet;
}
}
В статье показаны соответствующие параметры проекта VS, которые могут быть полезны.