什么是Environment.FailFast?

什么是Environment.FailFast?

它有什么用处?

它被用来杀死一个应用程序,它是一个静态方法,可以立即杀死一个应用程序而不被任何exception块捕获。

Environment.FastFail(String)实际上可以是一个很好的debugging工具。 例如,假设你有一个简单的应用程序给你一些奇怪的输出。 你不知道为什么。 你知道这是错误的,但没有任何例外冒泡来帮助你。 那么,如果您有权访问Visual Studio 2005的Debug-> Exceptions …菜单项,则可以实际告诉Visual Studio允许您查看这些第一次机会exception。 如果你没有那个,但是你可以把Environment.FastFail(String)当成一个exception,并且使用演绎推理和消除过程来找出你的问题所在。

参考

它还创build了转储和事件查看器条目,这可能是有用的。

这是一种立即退出你的应用程序而不会抛出exception的方法。

文档在这里 。

在某些安全或数据关键的环境中可能有用。

它杀死应用程序,甚至跳过try / finally块。

从这里引用: https : //msdn.microsoft.com/en-us/library/ms229030(v=vs.110).aspx

✓通过调用System.Environment.FailFast (.NET Framework 2.0特性) 终止进程, 而不是在代码遇到不安全的情况下抛出exception

Failfast可用于可能危及用户数据的情况。 在数据库引擎中说,当检测到内部数据结构的损坏时,唯一理智的做法是尽可能快地停止进程,避免将垃圾文件写入数据库,并冒损坏数据库和丢失用户数据的风险。 这是failfast有用的一种可能情况。

另一个用途是捕捉程序员的错误。 假设你正在编写一个库,并且某个函数在任何情况下都接受一个不能为null的指针,也就是说,如果它是null,那么你显然是在编程错误的情况下。 你可以返回一个像E_POINTER这样的错误,或者抛出一些InvalidArgumentexception,并希望有人注意到,但是如果快速失败,你会更好的注意到他们:-)

请注意,我并不是限制指针的例子,你可以推广到任何不应该发生的参数或条件。 失败的速度最终会导致更好的质量的应用程序,因为许多错误不再被忽视。

最后,快速失败有助于尽可能忠实地捕获进程的状态(如创build内存转储),特别是在检测到不可恢复的错误或非常意外的情况时立即快速失败。

如果进程被允许继续,比如说'finally'子句将会运行,或者堆栈将被解开,并且在内存转储被取消之前,事情会被破坏或者被丢弃,那么进程的状态可能会被改变例如使得诊断问题的根本原因更加困难的方式。