跳转到内容

用户:FK8438/沙盒

维基百科,自由的百科全书

背景和起源

[编辑]

在早期的8位元DOS操作系统CP/M中,如果尝试在磁盘门开启的情况下读取软驱,系统会让程序悬置,直到插入磁盘门并且关闭(一些非常早期的磁盘硬件不会发送任何类型的讯号,直到磁盘被插入)。许多CP/M用户已经习惯了这种管理磁盘的方法,透过开启磁盘机来阻止程式读取或写入文件·,直到插入正确的磁盘为止。

瓷盘操作系统的主要设计考虑因素是为CP/M编写的软件是可移植到DOS,期间无需进行任何更改。即使第一代IBM 个人电脑中,也有硬件告诉操作系统磁盘机门已打开,但向软件传回错误将需要重写软件来处理错误。尽管如此,在设计之初时为了改善用户体验,特别是为那些不想要被阻止的使用者,“终止,重试,还是失败”将会提供一种摆脱悬置的方法。

同样,只要出现错误,CP/M就会重新读取或写入磁盘。通常,解决这个问题的唯一方法是将磁盘更改为另一个磁盘,然后它会从新磁盘上随机读取一些内容来解决。该提示也被重新使用以提供一种阻止这种情况的方法。

描述

[编辑]

磁盘遗失(或磁盘门开启)被DOS定义为“严重错误”,并且在这个“严重错误”出现后将会通知一个佳偶走“严重错误处理程序”的程序。[1]

“严重错误处理程序”启动后,会在屏幕上打出“Abort, Retry, ...”提示,然后等待使用者输入。 当出现其他问题(特别是,校验和错误)时从磁盘读取资料,也将会被被定义为“严重错误”,从而导致因“磁盘遗失”或“磁盘门开启”以外的原因出现提示。

解释

[编辑]

当出现“终止,重试,还是失败”警告信息后,使用者可以按一个指定的键盘字母来决定他们后续的操作。其中,可用可用选项包括:[2]

  • Abort--终止A):终止操作或程序,并返回命令提示字元。该程式不会进行任何清理(例如完成其他文件的写入)。
  • Retry--重试 (R):再尝试操作。如果使用者可以透过插入磁盘并关闭磁盘机门来解决问题,则可以执行“重试”操作。在早期的硬件上,重试磁盘读取错误有时会成功,但随着磁盘机的改进,这种情况变得不太可能。
  • Ignore--忽略I):将成功状态传回给呼叫程式或例程,尽管操作失败。这可用于磁盘读取错误,DOS 将传回读取缓冲区中的任何资料(可能包含一些正确的资料)。对于开启的磁盘机或遗失的磁盘,不会出现“忽略”。
  • Fail--失败(F):从 MS-DOS/PC DOS 3.3以及之后的版本开始,“失败”将会向程式传回错误代码,类似于“找不到档案”错误。然后程式可以正常恢复,并也许会要求使用者提供不同的档案名称。透过提供不会使程式崩溃或重复提示的选项,消除了提示的最大问题(以前称为“中止、重试、忽略?”)。

有些程式可以在运行时安装并使用自己的“严重错误处理程序”,并且许多更复杂的程序这样做是为了避免原本的讯息干扰显示。有些程式透过跳回呼叫程式、跳过DOS中的返回堆叠来伪造“失败”回应。

MS-DOS6.22中包含一种特殊情况,其中唯一的选项是“(R) 重试”:刷新硬盘后写式快取无法完成。 使用者可以尝试重新写入直到成功,或关机。

现代

[编辑]

硬盘和更大的可移动媒体使得管理每个磁盘机的多个磁盘的需求变得过时,从而使提示变得毫无用处。这也导致了它逐渐被立即“失败”的错误代码所取代。 DOS 3.3 COMMAND.COM 提供了启动选项 /F 来强制预设的关键错误处理程序在所有错误上传回“失败”。从版本 4.0 开始,替代命令列处理器 4DOSNDOS 支援 /F 以及 4DOS 中對應的 CritFail=Yes 指令.INI/NDOS.INI 也是如此。PTS-DOS 6.51 和 S/DOS 1.0 的 COMMAND.COM 以及 DR-DOS 7.02 及更高版本也支援此选项。在 OpenDOS 7.01 中,COMMAND.COM 提供了与 /N 类似的功能(描述为“未安装关键错误处理程序”),新版本仍然支援该功能。大多数其他操作系统,例如 Linux,在所有情况下总是表现为​​“失败”。

File:Cancel, Try Again, Continue.png
Windows 10上的“磁盘区错误”跳窗的萤幕截图,算是“终止,重试,还是失败”的现代化衍生。

随着DOS和磁盘的使用逐渐被取代,“终止,重试,还是失败”变得越来越罕见。

参考来源

[编辑]
  1. ^ 引用错误:没有为名为Hyde_1996_AoA的参考文献提供内容
  2. ^ 引用错误:没有为名为Microsoft_2006_KB67586的参考文献提供内容