QMLは:)
あなたは本当にあなたがC++での足で自分自身を撮影することができます同じように、いくつかの純粋なQML/JavaScriptコード「クラッシュ」とは、少なくともではないことはできませんがクラッシュすることはありません。
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の動作に影響を与えることがあります。これを防ぐための1つの可能な方法は、エラーを確実に回避するために、さまざまな方法でQMLコンポーネントを流用するUIのテストを記述することです。
テストコードで使用するトリックは、デフォルトのログハンドラをオーバーライドして、QMLエラーと警告を監視することです。これにより、私たちはQMLコンポーネントをテストすることができます(期待通りに動作しますか?)また、これらのテスト中に警告が生成されていないことを確認します。関連するドキュメントは次のURLから入手できます。http://doc.qt.io/qt-5/qtglobal.html#qInstallMessageHandler
終了しますか? ( 'Qt.quit();') – Velkan
より良いanwserを得るには、 "QMLページをクラッシュする"ことであなたの意図が何であり、何を達成しようとしているのかを説明してください。 –
主に、クラッシュ時にどのようなエラーメッセージが表示されるかを知ることに興味があります – samprat