En Dart, assert
es una herramienta de depuración que permite verificar si una condición es verdadera en tiempo de desarrollo. Si la condición de un assert
es falsa, el programa lanzará un error, lo cual ayuda a detectar problemas de lógica o valores inesperados durante la fase de desarrollo. Los assert
se eliminan en la versión de producción, por lo que no afectan el rendimiento del programa una vez que este es lanzado.
El assert
es una función que verifica que una expresión o condición sea verdadera. Si es verdadera, el programa continúa ejecutándose normalmente; si es falsa, se lanza una excepción AssertionError
y se detiene la ejecución en modo de desarrollo. Esto ayuda a los desarrolladores a detectar y corregir errores en tiempo de desarrollo.
La sintaxis básica de assert
consiste en escribir la palabra clave assert
seguida de la condición que quieres evaluar.
void main() {
int edad = 18;
assert(edad >= 18, "La edad debe ser 18 o mayor");
print("Acceso permitido");
}
En este ejemplo, si edad
es menor que 18, se lanzará un error con el mensaje "La edad debe ser 18 o mayor". Si edad
es 18 o más, el programa continuará y se imprimirá "Acceso permitido".
Puedes usar assert
para validar los parámetros de entrada de una función.
void establecerEdad(int edad) {
assert(edad > 0, "La edad debe ser mayor que 0");
print("Edad establecida a: $edad");
}
void main() {
establecerEdad(25); // Imprime: Edad establecida a: 25
establecerEdad(-5); // Lanza un AssertionError
}
Aquí, el assert
asegura que edad
sea positiva. Si no es así, el programa lanza un error.
El assert
es útil para validar los valores de las propiedades al crear instancias de una clase, asegurando que los objetos siempre tengan valores válidos.
class Persona {
final String nombre;
final int edad;
Persona({required this.nombre, required this.edad})
: assert(nombre.isNotEmpty, "El nombre no puede estar vacío"),
assert(edad >= 0, "La edad debe ser positiva o cero");
}
void main() {
Persona p = Persona(nombre: "Juan", edad: 30); // Crea el objeto correctamente
Persona pInvalida = Persona(nombre: "", edad: -5); // Lanza AssertionError
}
En este ejemplo, el assert
se usa en el constructor de Persona
para verificar que nombre
no esté vacío y que edad
sea no negativa.
Puedes usar assert
para asegurarte de que ciertas condiciones se cumplan en diferentes puntos del código, como verificaciones intermedias.
void calcularDescuento(double precio) {
assert(precio > 0, "El precio debe ser mayor que cero");
double descuento = precio * 0.1;
assert(descuento < precio, "El descuento no puede exceder el precio");
print("Descuento calculado: $descuento");
}
void main() {
calcularDescuento(100); // Imprime: Descuento calculado: 10.0
calcularDescuento(-50); // Lanza AssertionError
}
Este ejemplo verifica que el precio sea positivo antes de calcular el descuento y que el descuento sea menor que el precio original.
Los assert
solo están activos en modo de depuración. Cuando el programa se compila en modo de producción, los assert
se eliminan automáticamente, lo cual evita cualquier impacto en el rendimiento.
Para ejecutar un programa en modo de producción, usa:
dart run --release
assert
no afectan el rendimiento de la versión de producción.
Para más detalles sobre assert
, consulta la documentación oficial de Dart.
Jorge García
Fullstack developer