This first edition was written for Lua 5.0. While still largely relevant for later versions, there are some differences.
The fourth edition targets Lua 5.3 and is available at Amazon and other bookstores.
By buying the book, you also help to support the Lua project.
Programming in Lua | ||
Part IV. The C API Chapter 24. An Overview of the C API |
Unlike C++ or Java,
the C language does not offer an exception handling mechanism.
To ameliorate this difficulty,
Lua uses the setjmp
facility from C,
which results in a mechanism similar to exception handling.
(If you compile Lua with C++,
it is not difficult to change the code so that it uses
real exceptions instead.)
All structures in Lua are dynamic:
They grow as needed, and eventually shrink again when possible.
That means that the possibility of a memory-allocation failure
is pervasive in Lua.
Almost any operation may face this eventuality.
Instead of using error codes for each operation in its API,
Lua uses exceptions to signal these errors.
That means that almost all API functions may throw an error
(that is, call longjmp
) instead of returning.
When we write library code (that is, C functions to be called from Lua), the use of long jumps is almost as convenient as a real exception-handling facility, because Lua catches any occasional error. When we write application code (that is, C code that calls Lua), however, we must provide a way to catch those errors.
Copyright © 2003–2004 Roberto Ierusalimschy. All rights reserved. |