pcall講座
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[Lua演習]]
*pcall講座 [#g278a8e1]
Luaの実行中にエラーがでて画面上に赤字でlua runtime error...
このエラーが出るとそこでLuaの実行が中断してしまい、モデル...
&br;コレ自体、Luaが暴走してRCが本体ごと死んでしまう(無限...
*pcallとは [#x70c571a]
通常の関数呼び出しは
func(arg1, arg2, arg3)
のように行います。コレに対してpcall関数を用いる場合は
pcall(func arg1, arg2, arg3)
のようにして、pcall関数を通して目的の関数を呼び出します。...
*pcallの実用性 [#wf858c74]
上記のように便利そうなpcallですが、実際に使うとめちゃくち...
こういった理由により、実際のモデルではpcallが使われること...
*実践的なエラー対策 [#ed571d51]
RIAの特許っぽいんで許諾待ち
*定型表現としてのpcall [#o723a85e]
それなりに使えそうな定型表現と使用事例を集めてみました。
**普通にエラー処理のために使う [#g0ba2f5f]
local flag, ret = pcall(func,args)
if not flag then
--適当なエラー処理のコード
--out(0,ret) ・・・とか書いておくといいかもね!
end
最も典型的な使い方です。こんなところでエラーを起こされた...
**もうちょっと凝ったエラー処理をする [#eb1f8be2]
safe = false --グローバルなbooleanを用意しておくとい...
function main()
if safe then
func2()
else
local flag, ret = pcall(func1)
if not flag then
safe = false
--以後お好みのエラー処理でもどうぞ
--ログ表示系を持つモデルならエラー文字列を表示してあ...
--例えば MessageLog.Add(ret) とかそんな雰囲気で
end
end
end
長くてちょっと分かり辛いですが、func1がエラーで止まったら...
こんな小細工が必要なほど複雑なモデルはそう多くないですが...
なお、ロールバック処理はfunc2に気合で書いてください。
**ライブラリ呼び出しに使う [#j723a343]
pcall(require,"shared/SharedKeyAssign.lua")
このように記述すると、「ライブラリがロードできないからモデ...
終了行:
[[Lua演習]]
*pcall講座 [#g278a8e1]
Luaの実行中にエラーがでて画面上に赤字でlua runtime error...
このエラーが出るとそこでLuaの実行が中断してしまい、モデル...
&br;コレ自体、Luaが暴走してRCが本体ごと死んでしまう(無限...
*pcallとは [#x70c571a]
通常の関数呼び出しは
func(arg1, arg2, arg3)
のように行います。コレに対してpcall関数を用いる場合は
pcall(func arg1, arg2, arg3)
のようにして、pcall関数を通して目的の関数を呼び出します。...
*pcallの実用性 [#wf858c74]
上記のように便利そうなpcallですが、実際に使うとめちゃくち...
こういった理由により、実際のモデルではpcallが使われること...
*実践的なエラー対策 [#ed571d51]
RIAの特許っぽいんで許諾待ち
*定型表現としてのpcall [#o723a85e]
それなりに使えそうな定型表現と使用事例を集めてみました。
**普通にエラー処理のために使う [#g0ba2f5f]
local flag, ret = pcall(func,args)
if not flag then
--適当なエラー処理のコード
--out(0,ret) ・・・とか書いておくといいかもね!
end
最も典型的な使い方です。こんなところでエラーを起こされた...
**もうちょっと凝ったエラー処理をする [#eb1f8be2]
safe = false --グローバルなbooleanを用意しておくとい...
function main()
if safe then
func2()
else
local flag, ret = pcall(func1)
if not flag then
safe = false
--以後お好みのエラー処理でもどうぞ
--ログ表示系を持つモデルならエラー文字列を表示してあ...
--例えば MessageLog.Add(ret) とかそんな雰囲気で
end
end
end
長くてちょっと分かり辛いですが、func1がエラーで止まったら...
こんな小細工が必要なほど複雑なモデルはそう多くないですが...
なお、ロールバック処理はfunc2に気合で書いてください。
**ライブラリ呼び出しに使う [#j723a343]
pcall(require,"shared/SharedKeyAssign.lua")
このように記述すると、「ライブラリがロードできないからモデ...
ページ名: