目录

Lua初探-错误处理


Lua中的错误处理

Lua作为一个嵌入式的可扩展的语言,所有Lua的操作都将从用C语言编写的宿主程序中调用Lua库进行实现。然而当一个Lua代码块在编译或者执行的时候发生错误,其将返回到宿主程序进行处理,在此我们可以做一些操作,如打印一些错误信息。

Lua代码可以通过调用error方法明确的生成一个错误。如果你需要在Lua中捕获该错误,你可以使用pcall或者xpcall在安全模式下调用给定的方法。

每当出现错误时,都会传播错误对象(也称为错误消息),错误对象中包含有关错误的信息。 Lua本身只生成错误对象是字符串的错误,但程序可能会生成任何值的错误作为错误对象。 由Lua程序或其主机来处理这样的错误对象。

当你使用xpcall或者lua_pcall,你可以给出一个在发生错误时调用的消息处理程序。该方法将被原错误对象调用并返回一个新的错误对象。在错误出栈之前调用他,如此可以收集更多关于错误的信息,例如通过检查堆栈并创建一个堆栈回溯。该消息处理程序的调用是受到保护程序的保障的,所以一个错误消息被处理的同时将会再次调用消息处理城西,如果循环过程太长,Lua将会打断他并返回一个适当的消息。