El bloque 'try-catch'
Parte de la sección Lógica y Flujo del Journey de Dart de Coddy — lección 39 de 65.
Ahora que entiendes qué son las excepciones, aprendamos cómo manejarlas con elegancia usando el bloque try-catch. Esta es la herramienta fundamental que evita que tu programa se bloquee cuando algo sale mal.
El bloque try-catch funciona envolviendo el código potencialmente problemático en una sección try. Si ocurre una excepción, en lugar de que su programa falle, Dart salta inmediatamente a la sección catch donde puede manejar el error de manera apropiada.
try {
// Código que podría causar una excepción
int number = int.parse("abc");
} catch (e) {
// Código que se ejecuta si ocurre una excepción
print("Something went wrong: $e");
}En este ejemplo, intentar convertir la cadena "abc" a un entero normalmente haría que tu programa fallara. Sin embargo, debido a que está envuelto en un bloque try, la excepción se captura y se maneja en el bloque catch en su lugar. La variable e contiene información sobre lo que salió mal.
Este enfoque permite que su programa continúe ejecutándose incluso cuando ocurren situaciones inesperadas, lo que hace que su código sea mucho más robusto y fácil de usar.
Desafío
FácilCrea un programa que convierta de forma segura cadenas de entrada del usuario en números utilizando un bloque try-catch. Tu programa debe manejar casos en los que la entrada podría no ser un número válido y evitar que el programa falle.
- Lee una entrada de cadena que represente un número que necesita ser convertido a un entero
- Usa un bloque
try-catchpara intentar la conversión de forma segura utilizandoint.parse() - Si la conversión es exitosa, calcula el cuadrado del número (multiplícalo por sí mismo)
- Si la conversión falla y ocurre una excepción, maneja el error de manera adecuada
- Muestra el resultado o mensaje de error correspondiente en el formato exacto que se muestra a continuación
Por ejemplo, si la entrada es "5", tu programa debería mostrar:
Processing input: 5
Conversion successful!
The square of 5 is: 25Si la entrada es "abc", tu programa debería mostrar:
Processing input: abc
Error: Cannot convert 'abc' to a number
Please enter a valid integerSi la entrada es "12", tu programa debería mostrar:
Processing input: 12
Conversion successful!
The square of 12 is: 144Tu programa debe usar un bloque try-catch para envolver la operación int.parse(). En la sección try, intenta convertir la cadena de entrada en un entero y calcula su cuadrado. En la sección catch, maneja cualquier excepción que ocurra durante la conversión y muestra un mensaje de error apropiado. El programa debe continuar ejecutándose normalmente independientemente de si la conversión tiene éxito o falla.
Hoja de referencia
Usa bloques try-catch para manejar excepciones de manera elegante y evitar que el programa falle:
try {
// Código que podría causar una excepción
int number = int.parse("abc");
} catch (e) {
// Código que se ejecuta si ocurre una excepción
print("Something went wrong: $e");
}El bloque try contiene código potencialmente problemático, mientras que el bloque catch maneja cualquier excepción que ocurra. La variable e contiene información sobre la excepción.
Pruébalo tú mismo
import 'dart:io';
void main() {
// Leer la cadena de entrada
String? input = stdin.readLineSync();
// Mostrar mensaje de procesamiento
print('Processing input: $input');
// TODO: Escribe tu código a continuación
// Usa un bloque try-catch para convertir de forma segura la entrada a entero
// Calcula el cuadrado si la conversión es exitosa
// Maneja cualquier excepción que ocurra durante la conversión
}Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y Flujo
1Manipulación avanzada de listas
Propiedades de listas: first y lastEstado de la lista: isEmpty y isNotEmptyInvertir una listaAñadir a una lista: insertEliminación en listas: removeWhereBúsqueda en una lista: indexOfOrdenar una listaMezclar una listaResumen - Organizador de listas4Manipulación avanzada de mapas
Iterar sobre un mapaComprobación de claves y valoresPropiedades del mapa: keys y valuesAdición condicional: putIfAbsentEliminar entradas de un mapaMapas anidadosResumen - Actualización de inventario2Operaciones funcionales con listas
Transformar con 'map'Filtrar con 'where'Uso de '.toList()'Comprobar condiciones con 'any'Condiciones con 'every'Búsqueda con 'firstWhere'Resumen - Filtrado de datos5Proyecto: Calculadora de carrito de compras
Configuración del proyectoAgregar artículos al carrito3Conjuntos
¿Qué es un Conjunto?Crear un ConjuntoAñadir y eliminar elementos de un ConjuntoComprobar elementos en un ConjuntoConvertir una lista en un ConjuntoUnión de ConjuntosIntersección de ConjuntosDiferencia de ConjuntosResumen - Lista de invitados única6Manejo básico de errores
¿Qué son las excepciones?El bloque 'try-catch'Capturar excepciones con 'on'El bloque 'finally'Lanzar una excepciónResumen - División segura