En évitant exception de première chance de messages lorsque l'exception est en toute sécurité
Le bit suivant du code des captures de l'EOS Exception
using (var reader = new BinaryReader(httpRequestBodyStream)) {
try {
while (true) {
bodyByteList.Add(reader.ReadByte());
}
} catch (EndOfStreamException) { }
}
Alors, pourquoi dois-je quand même recevoir les exceptions de première chance dans ma console?
Une exception de première chance de type 'System.IO.EndOfStreamException' s'est produite dans mscorlib.dll
Est-il un moyen de masquer ces exception de première chance de messages?
Vous devez vous connecter pour publier un commentaire.
Le point de "première chance" exceptions que vous voyez les pré-gestionnaire de sorte que vous pouvez vous arrêter sur eux pendant le débogage sur le point de lancer. Une "seconde chance" d'exception est celui qui n'a pas de gestionnaire approprié. Parfois, vous voulez attraper "première chance" des exceptions, car il est important de voir ce qui se passe quand elle est lancée, même si quelqu'un l'attraper.
Il n'y a rien à être concernés par. Ce comportement est normal.
Pour éviter de voir les messages, cliquez-droit sur la fenêtre de sortie et décochez la case "Messages d'Exception".
Cependant, les voyant arriver pourrait être sympa, si vous êtes intéressé à savoir lorsque des exceptions sont levées, sans définition de points d'arrêt et de reconfigurer le débogueur.
1) Dans Visual Studio, vous pouvez modifier les paramètres de la façon dont le Débogueur poignées (pauses) exceptions.
Aller à Déboguer > Exceptions. (Remarque: cela peut ne pas être dans votre menu en fonction de votre Environnement de Visual Studio réglage. Si non il suffit de l'ajouter à votre menu à l'aide du menu Personnaliser.)
Là, vous êtes présenté avec une boîte de dialogue d'exceptions et quand s'abattre sur eux.
Dans la ligne "Common Language Runtime Exceptions", vous pouvez le désélectionner jeté (qui devrait alors cesser de vous ennuyer sur premier chance exceptions) et vous pouvez également désélectionner l'Utilisateur unhandeled (que je ne recommande pas), si vous voulez.
2) Le message que vous obtenez ne devrait pas être dans la console, mais devrait être figurant dans la "production" de la fenêtre de Visual Studio. Si ce dernier est le cas, alors je n'ai pas trouvé la possibilité de le supprimer, mais il n'apparaît pas si vous exécutez l'application, sans Visual Studio.
Espère que ça aide.
Contrairement À Java, .NET exceptions sont assez coûteux en termes de puissance de traitement, et les exceptions traitées doivent être évités dans le normal et l'exécution réussie de chemin.
Non seulement pour éviter l'encombrement dans la fenêtre de la console, mais vos performances vont s'améliorer, et il fera des compteurs de performance comme .NET CLR Exceptions plus de sens.
Dans cet exemple, vous utilisez
J'ai eu ce problème et je ne pouvais pas comprendre où l'exception a été levée. Donc, ma solution a été de permettre à Visual Studio pour s'arrêter sur ce genre d'exception.
"jeter" case à cocher et décocher la case "l'utilisateur géré".
Si vous voulez plus de contrôle sur ces messages, vous pouvez ajouter un gestionnaire:
Cela vous permet de garder le silence comme mentionné dans d'autres commentaires, mais encore permet de s'assurer que vous êtes en mesure de les connaître. Je trouve que c'est bon de voir combien j'en suis vraiment jeter si je l'enregistrement d'un message et d'horodatage d'un fichier texte.
En fait, si sont avoir de nombreuses exceptions par seconde, vous doit atteindre de meilleures performances en cochant lecteur.EndOfStream valeur.. l'Impression de ces messages d'exception est incroyablement lent, et les cacher dans visual studio ne sera pas accélérer quoi que ce soit.
dans VB.NET:
DebuggerHiddenAttribute
veut simplement dire que l'exception de première chance sera indiqué sur la méthode d'appel, plutôt que la méthode elle-même.Je pense que le flux est en train de lancer cette exception, de sorte que votre essai est portée étroite de l'attraper.
Ajouter un peu plus de try catch combos dans les différentes étendues jusqu'à ce que vous le prenez où ses fait d'être jeté, mais il semble que se soit à l'extérieur de votre aide, depuis le torrent de l'objet n'est pas créé à l'aide de son champ.