Qu’est-ce que Environment.FailFast?

Qu’est-ce que Environment.FailFast?

Comment est-ce utile?

Il est utilisé pour tuer une application, c’est une méthode statique qui va tuer instantanément une application sans être attrapé par des blocs d’exception.

Environment.FastFail (Ssortingng) peut en réalité être un excellent outil de débogage. Par exemple, supposons que vous ayez une application qui vous donne des résultats étranges. Vous ne savez pas pourquoi. Vous savez que c’est faux, mais il n’y a aucune exception à la surface qui pourrait vous aider. Eh bien, si vous avez access à l’élément de menu Debug-> Exceptions … de Visual Studio 2005, vous pouvez en réalité dire à Visual Studio de vous permettre de voir ces exceptions de la première chance. Si vous ne le possédez pas, vous pouvez cependant placer Environment.FastFail (Ssortingng) dans une exception et utiliser un raisonnement déductif et un processus d’élimination pour déterminer où se situe votre problème.

Référence

Il crée également une entrée de vidage et d’observateur d’événements, ce qui peut être utile.

C’est un moyen de quitter immédiatement votre application sans générer d’exception.

La documentation est ici .

Pourrait être utile dans certains contextes de sécurité ou critiques.

Il tue l’application et même saute des blocs try / finally.

Failfast peut être utilisé dans des situations où vous pourriez mettre en danger les données de l’utilisateur. Supposons que dans un moteur de firebase database, lorsque vous détectez une corruption de vos structures de données internes, la seule solution sensée consiste à interrompre le processus aussi rapidement que possible, pour éviter d’écrire dans la firebase database et risquer de le corrompre et de perdre les données de l’utilisateur. C’est un scénario possible dans lequel failfast est utile.

Une autre utilisation consiste à détecter les erreurs de programmation. Supposons que vous écrivez une bibliothèque et que certaines fonctions acceptent un pointeur qui ne peut être null en aucun cas, autrement dit, s’il est nul, vous êtes clairement en présence d’une erreur du programmeur. Vous pouvez renvoyer une erreur comme E_POINTER ou émettre une exception InvalidArgument et espérer que quelqu’un le remarque, mais vous obtiendrez mieux leur attention en échouant rapidement 🙂

Notez que je ne limite pas l’exemple aux pointeurs, vous pouvez généraliser à tout paramètre ou condition qui ne devrait jamais se produire. Si vous échouez rapidement, vous obtiendrez des applications de meilleure qualité, car de nombreux bogues ne passent plus inaperçus.

Enfin, failing fast aide à capturer l’état du processus aussi fidèlement que possible (lorsqu’un fichier de vidage de mémoire est créé), en particulier lorsqu’il échoue rapidement dès la détection d’une erreur irrécupérable ou d’une condition vraiment inattendue.

Si le processus était autorisé à continuer, supposons que les clauses «finally» soient exécutées ou que la stack soit décompressée et que des éléments soient détruits ou éliminés avant qu’un vidage de mémoire ne soit effectué, l’état du processus pourrait alors être modifié. Cela rend beaucoup plus difficile le diagnostic de la cause fondamentale du problème.

Citation d’ici: https://msdn.microsoft.com/en-us/library/ms229030(v=vs.110).aspx

✓ CONSIDER terminer le processus en appelant System.Environment.FailFast (fonctionnalité .NET Framework 2.0) au lieu de déclencher une exception si votre code rencontre une situation où il est dangereux de l’exécuter ultérieurement .