我在 Vala 应用程序中使用 Glib.Settings。我想确保即使架构或密钥不可用,我的程序也能正常工作。所以我添加了一个 try/catch 块,但是如果我使用不存在的密钥,程序就会出现段错误。据我了解,它甚至没有到达 catch 语句。
这是使用设置的函数:
GLib.Settings settings;
string token = "";
try
{
settings = new GLib.Settings (my_scheme);
token = settings.get_string("token1");
}
catch (Error e)
{
print("error");
token = "";
}
return token;
程序输出为:
(main:27194): GLib-GIO-ERROR **: Settings schema 'my_scheme' does not contain a key named 'token1'
Trace/breakpoint trap (core dumped)
(当然我使用的是我真正的方案字符串而不是 my_scheme)
那么你能建议我哪里错了吗?
中的方法GLib.Settings
, 包括get_string
不要抛出异常,他们会调用abort
图书馆内。这不是一个理想的设计,但您对此无能为力。
在这种情况下,正确的做法是修复您的架构,安装到/usr/share/glib-2.0/schemas
并运行glib-compile-schemas
在该目录上(作为 root)。
Vala 仅具有检查异常,因此与 C# 不同,方法must声明它将抛出,否则不可能这样做。您始终可以仔细检查 Valadoc 或 VAPI 来查看。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)