QtのQML言語は、あらゆる種類の「厳密」モードを提供しますか?特に、私が好きな二つの特徴がある:(foo
は、既存のプロパティですが、foo
がnullのときbar
が定義され、そしてfoo.bar
されていない場合などfoo = bar
)QMLの「厳密」モードですか?
- アプリケーションのクラッシュは
undefined
またはnull
を基準に - "ハード"がアサートされます(
console.assert
機能はアプリケーションをクラッシュさせません)。
QtのQML言語は、あらゆる種類の「厳密」モードを提供しますか?特に、私が好きな二つの特徴がある:(foo
は、既存のプロパティですが、foo
がnullのときbar
が定義され、そしてfoo.bar
されていない場合などfoo = bar
)QMLの「厳密」モードですか?
undefined
またはnull
を基準にconsole.assert
機能はアプリケーションをクラッシュさせません)。すべて.qml 1.使用QMLの糸くず
実行qmllintとQMLのエラー/警告
のビルド設定find ./myproject -type f -regex ".*\.\(qml\|js\)" -exec "$QT_DIR/bin/qmllint" \{\} +
2.クラッシュアプリで.jsファイル
カスタムQDebugメッセージハンドラ関数を書くstatic void handler(QtMsgType type, const QMessageLogContext& context, const QString &message);
qInstallMessageHandler(&MyQDebugMessageHandler::handler);
で登録するとQMが変わります致命的なログにL警告:
if (type == QtWarningMsg)
{
auto fatalWarnings = std::vector<QString>{
QStringLiteral("ReferenceError:"),
QStringLiteral("is not a type"),
QStringLiteral("File not found"),
};
for (const auto &s : fatalWarnings)
{
if (message.contains(s))
{
type = QtFatalMsg;
break;
}
}
}
はその後タイプQtFatalMsg
のQDebugメッセージアプリをクラッシュされていることを確認します。 console.assert上
3.クラッシュ()
console.assert()
は、それらを検出するために特定のエラーが、何を作成します。だから、ポイント2を適応させて、エラー時にもアプリケーションをクラッシュさせてください。
私のゴシック。 qmllintについて私はどのように知りませんでしたか?私はこのGUIで作業を始めて以来、これほどのことを望んできました。それと残りのために本当にありがとう。 –
:)私の喜び! –
あなたは**クラッシュしたいですか? – dtech
@ddriverはい、開発中です。コンソール出力を読み込み、さまざまな問題が深刻であることを推測するよりもずっと簡単です。 (これは、少なくとも私の意見では、少なくともQML側でうまく設計されていないアプリです。) –
@ddriverクラッシュするアプリケーションのより一般的な防御と、私が愛しているようなエラー処理に関する記事プロモーションを楽しむには、「バグは回復不能のエラーではありません!ここに:http://joeduffyblog.com/2016/02/07/the-error-model/ –