2017-08-11 5 views
3

基本的には、exit(-1)というアナログの機能がGNU Smalltalk 3.2.5にありますか?あるいは、実行中にエラーが発生した場合、ゼロ以外の終了コードを返すように設定する方法がありますか? gstがstコードファイルを正常に実行したか、エラー(構文または実行時/例外)が発生したかどうかを検出できます。リターンコードでSmalltalk VMを手動で終了することはできますか?

答えて

2

はい、それは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 
    ] 

ためObjectMemory quit: 0又はObjectMemory quit: 1等を使用可能です。

+0

まあ、私はSmalltalkが本当にそのVMの外に何かの強い概念を持っていないと、そのVMはまた、いくつかのPC上で実行され、それとも通信する方法が必要かもしれないことを理解します。しかし、 'gst'はすでに実行を中止するために' self halt'をサポートしていますので、 'self halt:exitCode'(またはそうでない理由)があるかどうか疑問に思っていました。コード出力のテキストと間違ったエラーコードを区別するための信頼できる方法がないため(特にプログラム出力をほとんど制御できない場合、つまり外部の場合)、標準出力に印刷するだけでは明らかにオプションではありません。 –

+0

weel、プログラムがstderrを完全に制御できない場合(また、コンパイラがいくつかの構文エラーを超えている可能性もあります)、理想的ではありません。問題はロギングではなく、Smalltalkと外部OSとの通信(つまり、exitCodeはプログラムが成功したかどうか、exitCode上にある他の多くのプログラムが正しく設定されているかどうかを示すために頻繁に使用されます。外部OS /システムと正しく通信できないと、Smalltalkの使用例が言語として制限されます。 –

+0

@DanM。編集済みの回答を参照してください。 –

関連する問題