【发布时间】:2018-01-19 10:06:00
【问题描述】:
基本上,GNU Smalltalk 3.2.5 中是否有某种类似 exit(-1) 的函数?或者有没有办法配置它,如果它在执行过程中遇到错误,它会返回非零退出代码?我希望能够检测gst 是否成功执行了 st 代码文件,或者是否发生了错误(语法或运行时/异常)。
【问题讨论】:
基本上,GNU Smalltalk 3.2.5 中是否有某种类似 exit(-1) 的函数?或者有没有办法配置它,如果它在执行过程中遇到错误,它会返回非零退出代码?我希望能够检测gst 是否成功执行了 st 代码文件,或者是否发生了错误(语法或运行时/异常)。
【问题讨论】:
是的,可以使用ObjectMemory quit: 0 或ObjectMemory quit: 1 等。source code 代表ObjectMemory quit:
ObjectMemory class >> quit: exitStatus [
"Quit the Smalltalk environment, passing the exitStatus integer
to the OS. Files are closed and other similar cleanups occur."
<category: 'builtins'>
<primitive: VMpr_ObjectMemory_quit>
SystemExceptions.WrongClass signalOn: exitStatus mustBe: SmallInteger
]
在源代码中搜索“退出”将提供其实际操作示例。
【讨论】:
gst 已经支持self halt 停止执行,所以我想知道是否有类似self halt:exitCode 的东西(或者为什么没有)。仅将其打印到标准输出显然不是一种选择,因为没有可靠的方法来区分代码本身输出的文本和这种临时错误代码(特别是如果您对程序输出几乎没有控制权,即如果它是外部的)