Añadir mensaje a Assert en C++

Zeeshan Afridi 12 octubre 2023
  1. Afirmar en C++
  2. Ventajas de Assert en C++
  3. Mostrar mensaje personalizado en afirmación en C++
  4. Personaliza el mensaje personalizado en Assert en C++
  5. Conclusión
Añadir mensaje a Assert en C++

Las afirmaciones son uno de los mecanismos de manejo de errores en C++ que ayudan a los desarrolladores y probadores a depurar y probar la aplicación.

Estas son expresiones booleanas, que utilizan la prueba de las expresiones lógicas en el programa y devuelven true si no se detecta ningún error; de lo contrario, el programa finaliza y se muestra un error.

Se usa cuando tenemos algunas restricciones que deben cumplirse para ejecutarse correctamente o terminarse de otra manera.

cpp afirmar

Afirmar en C++

Digamos que la velocidad del automóvil no debe ser menor que 0 ni mayor que la velocidad de la luz.

Assert(speed<0 && speed> speed_of_light)
  1. Tenemos dos restricciones en esta expresión que no deben violarse.
  2. La experiencia ha demostrado que las aserciones en programación son uno de los métodos más efectivos y rápidos para detectar y corregir errores en los programas.
  3. La experiencia ha demostrado que escribir afirmaciones durante la programación es una de las formas más rápidas y efectivas de detectar y corregir errores.

Las aserciones son macros de preprocesadores que se utilizan para evaluar la expresión condicional en los programas.

Assert(Condition)

    assert(x < 10)

Esta expresión nos dice que x debe ser menor que 10 para funcionar sin problemas; de lo contrario, el programa se cerrará y arrojará un error.

Por ejemplo, estamos ejecutando un programa con dos caminos condicionales: true y false. Para la ruta true, el programa se ejecutará sin problemas sin arrojar un error, mientras que en la ruta false, el programa se cerrará y mostrará un error.

El error generalmente consta de la expresión condicional fallida, la ruta del programa y el número de línea donde ocurrió el error.

Esto nos ayuda a conocer la ocurrencia del error, lo que hace que las pruebas y la depuración sean más eficientes y sencillas.

Ejemplo de código:

#include <cassert>

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

Producción :

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

Ventajas de Assert en C++

Las aserciones son mecanismos de manejo de errores muy efectivos y prácticos que nos ayudan de muchas maneras a detectar errores en el código. Usó el enfoque basado en pruebas, que dice que escribimos casos de prueba antes del desarrollo y luego comenzamos el desarrollo de acuerdo con los casos de prueba.

De manera similar, escribimos algún fragmento de código en la macro de aserción, que el programa debería pasar sin causar un error.

Algunas ventajas de usar assert en pruebas y depuración.

  1. Las afirmaciones nos ayudan en la detección de errores.
  2. Proporciona una mejor observabilidad.
  3. También nos ayuda a identificar la causa del error y la ruta del error con el número de línea.
  4. Se pueden agregar mensajes de error personalizados; otros probadores y programadores también pueden entender el error más humanizado.
  5. Nos ayuda en la construcción de lógica libre de errores.
  6. Pruebas y depuración eficientes.

Mostrar mensaje personalizado en afirmación en C++

También podemos usar métodos para mostrar mensajes personalizados en la macro de afirmación, que es una opción efectiva y práctica. Indicaba y explicaba los errores de una manera más humana.

Pequeños equipos están trabajando en cada parte del software en grandes organizaciones de software, algunos diseñan y otros codifican y prueban. Por lo tanto, escribir macros de afirmación con mensajes personalizados puede ser muy útil para que la otra persona analice y comprenda la naturaleza y la causa del error.

Ejemplo de código:

#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;
}

Producción :

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

En este programa, estamos dividiendo 4 por 0 (4/0), pero como sabemos, no podemos dividir ningún número por 0, por lo que, como era de esperar, arrojará un error. Para mejorar la legibilidad del error, hemos agregado un mensaje personalizado.

Personaliza el mensaje personalizado en 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;
}

Producción :

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

Este es el mismo ejemplo que el anterior, pero está personalizado. Las funcionalidades son las mismas en general.

Hemos creado nuestra función personalizada para mostrar el mensaje en una línea separada.

El propósito es mejorar la legibilidad y saber cómo podemos personalizar las macros de aserción para mostrar mensajes personalizados.

Conclusión

En este artículo, hemos entendido la instrucción assert() en C++, cómo funciona y las ventajas de assert(). Además, hemos visto la sintaxis de assert() y cómo mostrar mensajes personalizados para mejorar la legibilidad del error.

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