Ajouter un message à Assert en C++

Zeeshan Afridi 12 octobre 2023
  1. Assertion en C++
  2. Avantages d’Assert en C++
  3. Afficher un message personnalisé dans Assert en C++
  4. Personnaliser le message personnalisé dans Assert en C++
  5. Conclusion
Ajouter un message à Assert en C++

Les assertions sont l’un des mécanismes de gestion des erreurs en C++ qui aide les développeurs et les testeurs à déboguer et tester l’application.

Ce sont des expressions booléennes, utilisant le test des expressions logiques dans le programme et renvoyant true si aucune erreur n’est détectée ; sinon, le programme se termine et une erreur s’affiche.

Il est utilisé lorsque nous avons des contraintes qui doivent être satisfaites pour s’exécuter correctement ou se terminer autrement.

cpp affirmer

Assertion en C++

Disons que la vitesse de la voiture ne doit pas être inférieure à 0 et supérieure à la vitesse de la lumière.

Assert(speed<0 && speed> speed_of_light)
  1. Nous avons deux contraintes dans cette expression qui ne doivent pas être violées.
  2. L’expérience a montré que les assertions en programmation sont l’une des méthodes les plus efficaces et les plus rapides pour détecter et corriger les bogues dans les programmes.
  3. L’expérience a montré que l’écriture d’assertions pendant la programmation est l’un des moyens les plus rapides et les plus efficaces de détecter et de corriger les bogues.

Les assertions sont des macros de préprocesseurs utilisées pour évaluer l’expression conditionnelle dans les programmes.

Assert(Condition)

    assert(x < 10)

Cette expression nous dit que x doit être inférieur à 10 pour fonctionner correctement ; sinon, le programme sera terminé et générera une erreur.

Par exemple, nous exécutons un programme avec deux chemins conditionnels : true et false. Pour le true chemin, le programme s’exécutera correctement sans générer d’erreur, tandis que dans le false chemin, le programme se terminera et affichera une erreur.

L’erreur se compose généralement de l’expression conditionnelle ayant échoué, du chemin du programme et du numéro de ligne où l’erreur s’est produite.

Cela nous aide à connaître l’occurrence de l’erreur, ce qui rend les tests et le débogage plus efficaces et plus faciles.

Exemple de code :

#include <cassert>

int main() {
  int x = 3;
  x = 7;
  assert(x == 3);
  return 0;
}

Production:

Assertion failed: x==3, file E:\Client Project \Codes\assertCodes.cpp,, line 7

Avantages d’Assert en C++

Les assertions sont des mécanismes de gestion des erreurs très efficaces et pratiques pour nous aider de plusieurs manières à détecter les erreurs dans le code. Il a utilisé l’approche pilotée par les tests, qui dit que nous écrivons des cas de test avant le développement, puis que nous commençons le développement en fonction des cas de test.

De même, nous écrivons un morceau de code dans la macro assert, que le programme doit traverser sans provoquer d’erreur.

Certains avantages de l’utilisation d’assertion dans les tests et le débogage.

  1. Les assertions nous aident à détecter les erreurs.
  2. Il offre une meilleure observabilité.
  3. Cela nous aide également à identifier la cause de l’erreur et le chemin de l’erreur avec le numéro de ligne.
  4. Des messages d’erreur personnalisés peuvent être ajoutés ; d’autres testeurs et programmeurs peuvent également comprendre l’erreur plus humanisée.
  5. Cela nous aide à construire une logique sans erreur.
  6. Tests et débogage efficaces.

Afficher un message personnalisé dans Assert en C++

Nous pouvons également utiliser des méthodes pour afficher des messages personnalisés dans la macro assert, qui est une option efficace et pratique. Il indiquait et expliquait les erreurs d’une manière plus humaine.

De petites équipes travaillent sur chaque partie du logiciel dans de grandes organisations de logiciels, certaines conçoivent et d’autres codent et testent. Ainsi, écrire des macros asserts avec des messages personnalisés peut être très utile pour que l’autre personne analyse et comprenne la nature et la cause de l’erreur.

Exemple de code :

#include <cassert>

int main() {
  int dividend = 4;
  int divisor = 0;
  assert(("Message: Anything divided by 0 is undefined", divisor != 0));
  int divison = dividend / divisor;
  return 0;
}

Production:

Assertion failed: ( "Message: Anything divided by 0 is undefined", divisor != 0), file E:\Client Project \Codes\assertCodes.cpp,, line 6

Dans ce programme, nous divisons 4 par 0 (4/0), mais comme nous le savons, nous ne pouvons diviser aucun nombre par 0, donc comme prévu, cela générera une erreur. Pour améliorer la lisibilité de l’erreur, nous avons ajouté un message personnalisé.

Personnaliser le message personnalisé dans Assert en C++

#include <cassert>
#include <iostream>
using namespace std;
bool print_if_false(const bool assertion, const char* message) {
  if (!assertion) {
    cout << message << endl;
  }
  return assertion;
}
int main() {
  int dividend = 4;
  int divisor = 0;
  assert(print_if_false(divisor != 0,
                        "Message: Anything divided by 0 is undefined"));
  return 0;
}

Production:

Message: Anything divided by 0 is undefined
Assertion failed: print_if_false(divisor != 0,"Message: Anything divided by 0 is undefined" ), file E:\Client Project \Codes\assertCodes.cpp, line 18

C’est le même exemple que ci-dessus, mais il est personnalisé. Les fonctionnalités sont globalement les mêmes.

Nous avons créé notre fonction personnalisée pour afficher le message sur une ligne distincte.

L’objectif est d’améliorer la lisibilité et de savoir comment personnaliser les macros assert pour afficher des messages personnalisés.

Conclusion

Dans cet article, nous avons compris l’instruction assert() en C++, son fonctionnement et les avantages de assert(). En plus de cela, nous avons vu la syntaxe de assert() et comment afficher des messages personnalisés pour améliorer la lisibilité de l’erreur.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn