I want to exit the execution of a Lua script on some condition. For example:
content = get_content()
if not content then
-- ( Here i want some kind of exit function )
next_content = get_content()
--example there can lot of further checks
Here I want that if I am not getting content my script suppose to terminate is should not go to check to next.
4 Answers 4
Use os.exit()
or just return
from some "main" function if your script is embedded.
os.exit()
kill process by sending a signal
do return end
stop execution
The two methods are not equal if you want to write and execute some luacode in the interpreter after stopping the execution by launching your program using the -i
flag.
th -i main.lua
-
5In what way are they not equal?Kevin Bullaughey– Kevin Bullaughey2017年03月08日 18:14:23 +00:00Commented Mar 8, 2017 at 18:14
In lua 5.2.0-beta-rc1+, you can add a label at the end of your code called ::exit::
or something of the like, and then whenever you need to exit the program just call it like this:
goto exit
-
Not sure what do you mean by adding a label of
::exit::
, is that a typo ? I don't think it's a correct syntax of lua.Kalib Zen– Kalib Zen2020年10月25日 17:10:43 +00:00Commented Oct 25, 2020 at 17:10 -
4
-
Ok, that is for the newest lua. I tried on old lua did not workToiletGuy– ToiletGuy2021年10月01日 11:29:34 +00:00Commented Oct 1, 2021 at 11:29
os.exit(ERROR_CODE
) e.g. os.exit(1)
is an answer.
Below is my practical example working with MS OS:
require("config_fonts")
local success, config_fonts = pcall(require, "config_fonts")
if not success then
print("Error loading config_fonts.lua:", config_fonts)
os.exit(1)
end
In a .bat or .cmd file:
%LUA% lua\some_script.lua
if errorlevel 1 (
echo [ERROR] Failed to process something
goto eof )
os.exit()
does just that.