有类似的问题
here
(尽管它不是特定于
gi-gtk
,更一般一点)T。我也建议
this
邮政。
基本上,haskell异常不能通过haskell/c边界。只是因为C对haskell异常一无所知。
就你而言,
Gtk.main
跑
gtk
事件循环在C中实现,回调在Haskell中实现。当回调抛出haskell异常时,它必须通过
GTK
事件循环以达到
executeProgram
功能。但由于上述原因,这是不可能的。
恐怕,解决方案是捕获每个回调中的所有异常。在您的情况下,您可能可以在
on
函数来自
GI GTK
将捕获所有异常并显示Bug对话框。