什么是Environment.FailFast?
它有用吗?
它用于终止应用程序,它是一个静态方法,可以立即杀死应用程序,而不会被任何异常块捕获.
Environment.FastFail(String)实际上可以是一个很好的调试工具.例如,假设你有一个应用程序只是彻头彻尾的给你一些奇怪的输出.你不知道为什么.你知道这是错的,但是没有任何例外可以帮助你解决问题.好吧,如果您可以访问Visual Studio 2005的Debug-> Exceptions ...菜单项,您实际上可以告诉Visual Studio允许您查看那些第一次机会异常.如果你没有,那么你可以将Environment.FastFail(String)放在异常中,并使用演绎推理和消除过程来找出你的问题所在.
参考
它还会创建一个转储和事件查看器条目,这可能很有用.
这是一种立即退出应用程序而不会抛出异常的方法.
文档在这里.
在某些安全或数据关键环境中可能很有用.
故障转移可用于可能危及用户数据的情况。假设在数据库引擎中,当您检测到内部数据结构的损坏时,唯一明智的做法是尽快停止该过程,以避免向数据库中写入垃圾并冒着破坏数据并丢失用户数据的风险。这是故障转移很有用的一种可能情况。
另一个用途是捕获程序员错误。假设您正在编写一个库,并且某些函数接受在任何情况下都不能为空的指针,也就是说,如果为空,则很明显您存在程序员错误。您可以返回类似E_POINTER的错误,也可以引发一些InvalidArgument异常并希望有人注意,但是通过快速失败,您会更好地吸引他们的注意:-)
请注意,我并没有将示例限制在指针上,您可以将其推广到永远不会发生的任何参数或条件。快速失败最终会导致应用程序质量更高,因为许多错误不再被忽视。
最后,快速失败有助于尽可能忠实地捕获进程状态(随着创建内存转储),尤其是在检测到不可恢复的错误或真正出乎意料的情况时立即快速失败时。
如果允许进程继续进行,例如说“ finally”子句将运行或堆栈将被解卷,并且事物将被破坏或处置,那么在进行内存转储之前,进程的状态可能会发生变化。诸如这样的方法,使得诊断问题的根本原因变得更加困难。