gpt4 book ai didi

qt - 你能在 QML 声明性代码中发现错误吗?

转载 作者:行者123 更新时间:2023-12-01 12:04:40 25 4
gpt4 key购买 nike

我的 QML 文件中有一个(声明性)行正在记录错误,我想捕获它并记录某些变量以尝试找出发生了什么。该行类似于(包含在 Repeater 因此使用 index ):

a: ((n === -1) || (n - p > 7) || (index >= t)) ? "" : b[p+index].c

(不,这些不是我的实际变量名称,我已将它们重命名以防止信息泄漏 - 实际名称并不重要)。

运行代码时,我偶尔会收到错误消息:
file:///path/to/SomeFile.qml:7: TypeError: Cannot read property 'c' of undefined

让我相信当 a 时,其中一个变量是错误的。字段正在根据其他变量进行修改。

我知道 try/catch在procudural QML代码中,但我不确定如何为声明性代码做类似的事情(或者即使可能)。

有没有办法捕获该错误并打印出错误发生时存在的所有相关变量?

最佳答案

也许我不明白这个问题,但 a:赋值可以是函数的结果,甚至可以是返回某个值的 JS 代码块。因此,您可以自由地使用 try/catch 或其他任何东西。

a: {
try {
return ((n === -1) || (n - p > 7) || (index >= t)) ? "" : b[p+index].c;
}
catch(e) {
console.log(e);
return "FUBAR";
}
}

添加: return关键字在这里实际上是可选的,没有它们也能正常工作。

还要指出:
a: ((n === -1) || (n - p > 7) || (index >= t)) ? "" : b[p+index].c;
等同于:
a: { ((n === -1) || (n - p > 7) || (index >= t)) ? "" : b[p+index].c; }
花括号对于单行表达式是可选的。

关于qt - 你能在 QML 声明性代码中发现错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58907292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com