1

我正在为 gnome-shell 编写扩展。javascript 扩展产生一个 sql 查询并在标准输出上捕获输出。在 sql 查询计算为 0 个元组/记录的情况下,我的扩展程序崩溃了。

下面是代码片段。

let [success, out, err, error] = GLib.spawn_sync(null, ["sqlite3", "-line", places, sqlQuery], null, 4, null);
let result = out.toString(); // Crashing here for 0 tuples. I was expecting 'result = ""'

我是一个javascript新手。我不明白out在这种情况下应该如何处理对象。对象不为空;也不是未定义的。

typeof out == null // false
typeof out == undefined // false
typeof out == "object" // true

编辑

typeof out == "null" // false
typeof out == "undefined" // false
typeof out == "object" // true
4

1 回答 1

0

我发现如果我执行以下操作,我可以防止崩溃

let [success, out, err, errno] = GLib.spawn_sync(null, ["sqlite3", "-line", places, sqlQuery], null, 4, null);
if (out.length > 0) {
        let records = out.toString().split('\n\n');
}

我不明白为什么out.toString()不能给我一个空字符串而不是崩溃。希望当我了解更多有关 javascript 和 glib 的信息时,我会这样做。

于 2012-03-17T14:56:06.247 回答