Matanuska ADR 006 - 运行时退出

Matanuska ADR 006 - 运行时退出

💡 原文英文,约1000词,阅读约需4分钟。
📝

内容提要

本文讨论了Matanuska BASIC的退出命令实现。通过CLI类的退出处理程序和Exit异常,Matanuska支持退出。为简化退出机制,决定将Host注入Runtime,直接调用其退出方法。Exit错误类型允许优雅关闭,CLI继续处理实际退出行为,测试中使用MockConsoleHost模拟退出。

🎯

关键要点

  • 本文讨论了Matanuska BASIC的退出命令实现。
  • Matanuska支持通过CLI类的退出处理程序和Exit异常来退出解释器。
  • Exit异常目前仅支持成功退出。
  • 为简化退出机制,决定将Host注入Runtime,直接调用其退出方法。
  • 退出处理程序的重写主要是为了测试,允许CLI在测试中“退出”而不实际结束进程。
  • Exit错误类型允许优雅关闭,确保在退出前清理资源。
  • Host抽象不仅负责日志记录,还负责所有操作系统级别的操作,包括退出。
  • 事件发射器接口的使用旨在将退出行为委托给Commander。
  • 决定将Host注入Runtime,直接调用其退出方法,避免了冗余的接口。
  • ConsoleHost#exit将抛出Exit错误,以实现优雅的关闭行为。
  • Exit错误将扩展以接受退出代码,支持有意的非零退出。
  • CLI将继续处理实际的退出行为,包括在测试中重写退出处理程序。
  • MockConsoleHost#exit将抛出MockExit错误,保持测试的当前结构。
  • 在处理OpCode.Exit时,Runtime将调用Host#exit并抛出Exit错误,CLI类将处理该错误。
➡️

继续阅读