las - propagacion de excepciones c#
Suprimir las excepciones de primera oportunidad. (2)
Clase DebuggerNonUserCodeAttribute
A partir de .NET 2.0, si marca un método con el atributo [DebuggerNonUserCode] , el depurador omitirá las excepciones de primera oportunidad en él.
Cita del enlace de MSDN (el énfasis agregado es mío):
los miembros que no forman parte del código creado específicamente por el usuario pueden complicar la experiencia de depuración . Este atributo suprime la visualización de estos tipos y miembros adjuntos en la ventana del depurador y pasa automáticamente a través del código provisto por el diseñador.
No hay un comportamiento en tiempo de ejecución aparte de la depuración, asociado con este atributo.
Sin embargo, si tiene un solo método con ciertas líneas destinadas a ser incluidas en el mecanismo de manejo de excepciones de primera oportunidad de Visual Studio, y otras líneas que deben excluirse, probablemente no haya una solución en este nivel de granularidad. Siempre puede refactorizar un método grande en múltiples métodos y usar el atributo en algunos seleccionados.
Información adicional...
Ejemplo de uso de este artículo
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;
}
}
El artículo muestra opciones de proyecto VS relacionadas que podrían ser útiles.
¿Es posible suprimir las supresiones de primera oportunidad en Visual Studio (depurador de C #) para líneas de código específicas?
Quiero usar excepciones de primera oportunidad en el depurador, pero hay alrededor de 50 excepciones de primera oportunidad que necesito para pasar por cada sesión de depuración antes de llegar al código interesante.
Actualmente, desactivo las excepciones de primera oportunidad y luego las enciendo manualmente, pero eso es una molestia y una pérdida de tiempo.
Esto está sucediendo porque estás haciendo un mal uso de las excepciones. Obtener 50 antes de llegar al "código interesante" no es una buena señal. No hay forma en Visual Studio de omitirlos en algún código, porque no está diseñado para alentar lo que estás haciendo.
Dicho esto, lo que haría sería desactivar la captura de excepciones de primera oportunidad en el depurador, try/catch
explícitamente la excepción que desea capturar y coloque un Debugger.Break()
cuando lo haya atrapado.