lua から呼び出された C# 関数が例外をスローする可能性がある既存の C# アプリケーションのスクリプト作成について、NLua を検討しています。
これまでのところ、私はこれを見つけました:
呼び出された C# 関数でlua コードが例外を処理しない場合、NLua はそれをラップして再スローし、C# レベルで処理できるようにします。
lua コードがxpcall を介して例外を「キャッチ」する場合、例外の詳細 (例: -.Message) にアクセスする方法が見つかりませんでした。
前者では、lua レベルのスタックダンプである debug.traceback() を取得できますが、例外の詳細は取得できません。後者は例外を提供しますが、Lua スタックダンプを取得する方法はありません (.Source で lua ファイルと行を取得しますが、それだけでは十分ではありません)。
質問は:
NLua "xpcall" エラー ハンドラで C# 例外の詳細を取得できますか?
または、NLua で C# 例外を処理して (lua スタックダンプを作成する目的で)、再スローすることはできますか?
または、egluaState.DoFile("myScript.lua") が例外を引き起こしたときに、"lua 状態" から lua スタックダンプを取得できますか?
どんな助けでも大歓迎です。NLua は、例外処理のみを整理できれば、私が考えていることにはほぼ完璧に思えます。