我的应用程序将qml作为前端,将c ++作为后端 要检查一些问题,我想强行让qml崩溃。
主要是我感兴趣的是当qml在客户端站点崩溃时会出现什么错误消息,以便我们可以更好地处理这些错误。 我已经尝试了一些事情,比如在QML页面上分配空值或空指针,但它不会使应用程序崩溃 从C ++方面,我从QQmlApplicationEngine加载应用程序。 任何建议都会有所帮助。
答案 0 :(得分:1)
答案 1 :(得分:0)
你无法真正制作一些纯粹的QML / JavaScript代码"崩溃",至少不同于你可以用C ++进行自拍的方式。
请记住,除了解释QML和JavaScript之外,任何错误通常都会生成QML警告。类似的东西:
qrc:/main.qml:33: ReferenceError: timer is not defined
这个错误会中断你在本地范围内执行的任何操作,可能搞乱一些绑定或者没有完全按照你的预期行事,但是它不会崩溃"你的QML申请。
如果您向QML公开了一些C ++组件,您可以通过从QML上下文触发一些有缺陷的C ++代码从技术上将您的应用程序从QML中崩溃。但这与从C ++后端崩溃你的应用程序是一回事......
在处理QML / JavaScript错误时,您可以使用try { ... } catch(e) { ... }
机制在常规JavaScript代码中捕获这些错误,如Catch QML error message
即使不是灾难性的,QML中的错误也可能会影响QML UI的行为。防止这种情况的一种可能方法是为您编写测试UI,您可以通过各种方式来放置QML组件,以确保不会出现错误。
我们在测试代码中使用的一个技巧(也可以在生产中使用)是覆盖默认日志处理程序并注意QML错误和警告。这允许我们测试我们的QML组件(它们是否按预期运行?)并且还验证在这些测试期间没有生成警告。相关文档可在此处获取:http://doc.qt.io/qt-5/qtglobal.html#qInstallMessageHandler