41 votes

Qu'est-ce que Environment.FailFast ?

Qu'est-ce que Environment.FailFast ?

Quelle est son utilité ?

1 votes

Je pense que la deuxième partie de la question est vraiment la question. Trouver ce qu'est un google, pourquoi, me laisse perplexe. A moins que vous ne fassiez quelque chose de vraiment méchant avec du code non sécurisé ou autre... BSOD en mode utilisateur - pour quand il n'y a plus rien de certain et que vous ne voulez pas risquer de casser quelque chose.

0 votes

Une utilisation pourrait être lorsque la licence (l'abonnement) du client est terminée après une vérification via un webApi. Il suffit de fermer l'application

33voto

cgreeno Points 17379

Il est utilisé pour tuer une application. Il s'agit d'une méthode statique qui tuera instantanément une application sans être rattrapée par un quelconque bloc d'exception.

Environment.FastFail(String) peut être un excellent outil de débogage. Par exemple, disons que vous avez une application qui est tout simplement vous donne des résultats bizarres. Vous n'avez aucune idée du pourquoi. Vous savez que c'est faux, mais il n'y a pas d'exceptions qui remontent à la surface pour vous aider. Eh bien, si vous avez accès à Visual Studio 2005, l'option de menu Debug->Exceptions..., vous pouvez dire à Visual Studio de de vous permettre de voir ces exceptions exceptions. Si vous n'avez pas cela, vous pouvez cependant mettre Environnement.FastFail(String) dans une exception, et utiliser le raisonnement déductif et le processus d'élimination pour trouver où se situe votre problème.

Référence

1 votes

Debugger.Launch et Debugger.Break peuvent également être utiles dans ce type de scénario.

6 votes

Y a-t-il une différence entre ceci et Process.GetCurrentProcess().Kill() ?

14voto

Rodrigo Hahn Points 3121

Il crée également un dump et une entrée dans le visualiseur d'événements, ce qui peut être utile.

7voto

Ed Guiness Points 21866

C'est un moyen de quitter immédiatement votre application sans lever une exception.

La documentation est aquí .

Peut être utile dans certains contextes de sécurité ou de données critiques.

5 votes

Ne serait-il pas inquiétant qu'il transmette des données à MS : "et qu'il inclue ensuite le message dans le rapport d'erreur à Microsoft."

6voto

Axel Rietschin Points 86

Failfast peut être utilisé dans des situations où vous risquez de mettre en danger les données de l'utilisateur. Disons que dans un moteur de base de données, lorsque vous détectez une corruption de vos structures de données internes, la seule ligne de conduite sensée est d'arrêter le processus aussi vite que possible, pour éviter d'écrire des déchets dans la base de données et risquer de la corrompre et de perdre les données de l'utilisateur. C'est un scénario possible où failfast est utile.

Une autre utilisation consiste à détecter les erreurs de programmation. Disons que vous écrivez une bibliothèque et qu'une fonction accepte un pointeur qui ne peut être nul en aucune circonstance, c'est-à-dire que s'il est nul, vous êtes clairement en présence d'une erreur de programmeur. Vous pouvez renvoyer une erreur telle que E_POINTER ou lancer une exception InvalidArgument et espérer que quelqu'un le remarque, mais vous attirerez 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. Le fait d'échouer rapidement se traduit finalement par des applications de meilleure qualité, car de nombreux bogues ne passent plus inaperçus.

Enfin, l'échec rapide aide à capturer l'état du processus aussi fidèlement que possible (comme un vidage de la mémoire est créé), en particulier lorsque l'échec rapide immédiatement lors de la détection d'une erreur irrécupérable ou d'une condition vraiment inattendue.

Si le processus était autorisé à se poursuivre, que les clauses "finally" étaient exécutées ou que la pile était déroulée, et que des éléments étaient détruits ou éliminés, avant qu'un vidage de la mémoire ne soit effectué, l'état du processus pourrait être modifié de telle sorte qu'il serait beaucoup plus difficile de diagnostiquer la cause première du problème.

5voto

PRINCESS FLUFF Points 2072

Il tue l'application et saute même les blocs try/finally.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X