assert()は、第一引数にboolean、第二引数にオプションでエラーメッセージを取る。呼び出しが成功した場合は、関数の戻り値を返す。例えば、以下のio.open()はエラーの場合、第一引数にnil、第二引数にエラーメッセージを返す。なので、以下の呼び出し方は定石となる。 file = assert(io.open(name, 'r')) 逆に、自作の関数で、エラー処理をする場合、以下の2パターンがある。 error()関数を呼び出し、エラーを発生させる 失敗の場合は、第一引数にnil(もしくはfalse)、第二引数にエラーメッセージを返す つまり、Luaではエラーを上側に伝播したい場合、エラーコードを返すのではなく、nilとエラーメッセージを返すのが基本。また、第二引数の型は文字列ではなく任意でよく、エラーコードを返しても良い。 package.loadlib()でのWin32API