Exceptions premières supprimer hasard
-
09-09-2019 - |
Question
Est-il possible de supprimer supressions première chance dans Visual Studio (C # débogueur) pour les lignes de code spécifiques?
Je veux utiliser exceptions de première chance dans le débogueur, mais il y a environ 50 exceptions de première chance que je dois passer par chaque session de débogage avant de passer à code intéressant.
À l'heure actuelle, j'éteins exceptions de première chance, puis de les activer manuellement, mais c'est embêtant et un puits de temps.
La solution
DebuggerNonUserCodeAttribute classe
de .NET 2.0, si vous marquez une méthode avec le [ DebuggerNonUserCode ] attribut , le débogueur ignorera exceptions de première chance en elle.
Citation de lien MSDN (non souligné est le mien):
membres qui ne font pas partie du code spécialement créé par l'utilisateur peut compliquer l'expérience de débogage . Cet attribut supprime l'affichage de ces types et adjoints en la fenêtre de débogage et automatiquement étapes par , plutôt que dans, concepteur code fourni.
Il n'y a pas de comportement d'exécution pour le débogage, associé à cet attribut.
Toutefois, si vous avez juste une méthode avec certaines lignes destinées à l'inclusion dans le premier mécanisme de gestion des exceptions chance de Visual Studio et d'autres lignes à exclure, il n'y a probablement pas une solution à ce niveau de granularité. Vous pouvez toujours factoriser une grande méthode dans plusieurs méthodes et utiliser l'attribut sur les sélectionner.
Infos supplémentaires ...
Exemple d'utilisation de cet article
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;
}
}
L'article montre lié VS options de projet qui pourraient être utiles.
Autres conseils
Cela se produit parce que vous utilisez mal des exceptions. Obtenir 50 avant d'arriver au « code intéressant » n'est pas un bon signe. Il n'y a aucun moyen dans Visual Studio pour les sauter dans un code, car il n'est pas conçu pour encourager ce que vous faites.
Cela dit, ce que je ferais serait de désactiver la capture d'exceptions de première chance dans le débogueur, try/catch
explicitement l'exception que vous ne voulez attraper et mettre dans un Debugger.Break()
quand vous avez attrapé.