問題タブ [assert]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 例外とアサーション
assert
Javaの例外処理と条件の使用の違いは何ですか?
Assert には 2 つのタイプがあることが知られています。しかし、いつassert
キーワードを使用する必要がありますか?
python - 非致命的な障害をサポートする Python テスト フレームワーク
自動システム テスト用の「テスト フレームワーク」を評価しています。これまでのところ、Python フレームワークを探しています。py.testまたはnoseでは、Googleテストフレームワークで知っているEXPECTマクロのようなものは見られません。最初の失敗でテストを中止せずに、1 つのテストで複数のアサーションを作成したいと考えています。これらのフレームワークで何か不足していますか、それとも機能しませんか? 自動化されたシステム テストに使用できる Python テスト フレームワークに関する提案はありますか?
python - Python assert -- 失敗の改善されたイントロスペクション?
これはかなり役に立たないアサーション エラーです。関連する式の値はわかりません (使用される定数は実際には変数名であると仮定します)。
assert
より派手なPythonでのより良い実装はありますか? -O
実行時に追加のオーバーヘッドを導入してはならず (アサートが失敗した場合を除く)、フラグが使用されている場合はオフにする必要があります。
編集: assert の 2 番目の引数が文字列であることは知っています。.. は、アサートされている式にエンコードされているため、書きたくありません。DRY (繰り返さないでください)。
c# - Assert.AreEqual(T obj1, Tobj2) が同一のバイト配列で失敗するのはなぜですか?
次のコード セグメントに 2 つの同一のバイト配列があります。
どちらの配列も、バイト単位まで同一です。このシナリオで、Assert.AreEqual が失敗するのはなぜですか?
iphone - パラメータを取ることができるマクロを書く方法は?
NSAssertなどを使用して、アプリでのデバッグを改善したいと考えています。NSAssertは、アサーションが失敗した場合に出力する文字列を必要としています。素晴らしいですが、その文字列に大量の情報を入力しない限り役に立ちません。これは、あちこちで行われると大きな混乱になる可能性があります。
そのため、クラス名、メソッド名などの有用な情報が満載の文字列を使用してNSAssert呼び出しを実行するマクロを作成したいと思います。しかし、もっと重要なのは、カスタムコメントも提供したいということです。次のようなマクロを想像してみてください。
USEFUL_ASSERT(foo!= nil、@ "それは本当に良くありませんでした")
多くの理由で、ここでは関数やメソッドの呼び出しを使用できません。コンテキストが失われ、どのクラスがその問題を引き起こしたのか、どのメソッドがその問題を引き起こしたのかがわからなかったためです。これはそのメソッド自体の内部でのみ実行できるため、[self class]や_cmdなど、この情報の多くのパラメーターを渡す必要がありますが、これらすべてのものをあちこちに散らばらせたくありません。挿入するコードが短いほど、保守が容易になります。
何か案が?
c++ - 例外vs.エラーコードvs.アサート
デバイスのレポートを生成するライブラリに取り組んでいます。メンバー関数は、generate_report (const std::string& no)
さまざまな理由で失敗する可能性があります。
- 無効なレポート番号
- 無効な状態(これ
report_generator
はFSMです) - アクティブなデバイスはありません
- レポート生成中のエラー
これらのエラーに最適なエラー処理メカニズムはどれですか?
- 戻る
true
かfalse
- エラーコードを返す
- アサートしてログに記録する
- 例外をスローします
- 上記の任意の組み合わせ
いくつかのコンテキスト情報:通常のワークフローは次のとおりです。ユーザーはデバイスをアクティブ化し、リストからレポートを選択して、「生成」をクリックします。
編集:これまでの返信ありがとうございます!私にとっては、いつアサーションを使用し、いつエラー処理を行うかが明確になりました。エラー処理に関しては、エラーコードと例外の両方に長所と短所があります。私は例外に行くと思います(そして上記のエラーのために4つのクラスを作成します)が、私はまだ本当に確信していません。私はいつも「予期しない状況」の例外を考えていました。無効なレポートは、実際には予想外ではありません。何かアドバイス?:)
mfc - 閉じるときに MFC アプリケーションがクラッシュする
動作中の MFC アプリケーション (ダイアログ アプリケーション) があり、そのボタンの一部を削除して新しいボタンを追加しましたが、アプリケーションを閉じるとクラッシュします。ASSERT()マクロのいずれかで失敗します。これらの行でデバッグ アサーションが失敗する
ファイル: afxtempl.h 行: 558
そのコードを表示すると、このようなものでした
何がうまくいかないかについての手がかりはありますか?アプリケーションは以前は正常に動作していましたが、台無しにしました。
c++ - アサーション チェックの便利な方法
一部のアサーションはコストがかかり、一部は製品コードでオフにする方が適切です。少なくとも、アサーションを常に有効にする必要があることは明らかではありません。
私のアプリケーションでは、アサーションの一部をファイルごとまたはクラスごとにオン/オフできるようにしたいと考えています。
C ++でそれを行う方法は?
c++ - デバッガーのクラッシュを待っていますか?
アサートが失敗した場合、またはセグメンテーション違反が発生した場合、次のいずれかが発生すると非常に便利です。
- プログラムは、デバッガーを実行するかどうかを尋ねます。
- デバッガーが接続されるまで、プログラムはクラッシュして待機します。
- プログラムは、この時点から実行を再開して調査できる何か (コア ダンプ?) を残します。
さまざまなプラットフォーム、言語、デバッガーがあるため、質問は非常に一般的です。C++ について質問していますが、Windows (VS)、Linux (gdb)、Mac (gdb?) のソリューションがコミュニティにとって最も役立つと思います。Linux + gdb に興味があります。
c++ - C ++クラスでアサーションを折りたたむ?
したがって、クラス以外のタイプの状況では、次のようなことができます。
val_to_check
代わりにが宣言されている場合const
、アサーションはコンパイラーによって折りたたむことができます。
クラスのメンバー変数を使用して同様の定数畳み込みを取得できるかどうか知りたいです。たとえば、次のようなことができますか?
したがって、クラスを定義するときにval_を知っている必要があります、a-la:
(私はこれらが不自然な例であることを知っています)。アサーションを折りたたむことは時々可能であるように思われますが、私がテストした単純な例ではそれができないようです。私が得た最善の方法は、アサーションコードを関数の最後に移動することです(-O3を使用してコンパイルする場合)