当到达脚本尾部或出现了未能捕捉到的异常时,Ruby会结束程序(当调用函数exit、abort或对主线程发出Thread.kill命令时,会引发SystemExit异常)。结束程序时会依次进行下列处理。
在ObjectSpace.define_finalizer中,若注册了finalizer的话就执行它(执行顺序不定).若在执行finalizer的过程中,发生了大规模退出的话,就中断finalizer的运行,但脚本仍将继续运行.
使用exit(3)结束程序.
此时传来的状态值取决于程序的结束方法.例如,
使用exit!函数时,将只执行exit(2),而不会执行上述任何步骤.