Menu
Coddy logo textTech

O Bloco 'try-catch'

Parte da seção Lógica & Fluxo do Journey de Dart da Coddy — lição 39 de 65.

Agora que você entende o que são exceções, vamos aprender como lidar com elas de forma elegante usando o bloco try-catch. Esta é a ferramenta fundamental que evita que seu programa trave quando algo dá errado.

O bloco try-catch funciona envolvendo o código potencialmente problemático em uma seção try. Se ocorrer uma exceção, em vez de travar o seu programa, o Dart pula imediatamente para a seção catch, onde você pode tratar o erro adequadamente.

try {
  // Código que pode causar uma exceção
  int number = int.parse("abc");
} catch (e) {
  // Código que é executado se ocorrer uma exceção
  print("Something went wrong: $e");
}

Neste exemplo, tentar converter a string "abc" para um número inteiro normalmente causaria o travamento do seu programa. No entanto, como ela está envolvida em um bloco try, a exceção é capturada e tratada no bloco catch. A variável e contém informações sobre o que deu errado.

Esta abordagem permite que seu programa continue em execução mesmo quando ocorrem situações inesperadas, tornando seu código muito mais robusto e amigável ao usuário.

challenge icon

Desafio

Fácil

Crie um programa que converta com segurança strings de entrada do usuário em números usando um bloco try-catch. Seu programa deve lidar com casos em que a entrada pode não ser um número válido e evitar que o programa trave.

  1. Leia uma entrada de string que representa um número que precisa ser convertido em um número inteiro
  2. Use um bloco try-catch para tentar a conversão com segurança usando int.parse()
  3. Se a conversão for bem-sucedida, calcule o quadrado do número (multiplique-o por ele mesmo)
  4. Se a conversão falhar e ocorrer uma exceção, trate o erro de forma adequada
  5. Exiba o resultado apropriado ou a mensagem de erro no formato exato mostrado abaixo

Por exemplo, se a entrada for "5", seu programa deve produzir:

Processing input: 5
Conversion successful!
The square of 5 is: 25

Se a entrada for "abc", seu programa deve produzir:

Processing input: abc
Error: Cannot convert 'abc' to a number
Please enter a valid integer

Se a entrada for "12", seu programa deve produzir:

Processing input: 12
Conversion successful!
The square of 12 is: 144

Seu programa deve usar um bloco try-catch para envolver a operação int.parse(). Na seção try, tente converter a string de entrada em um número inteiro e calcule seu quadrado. Na seção catch, trate qualquer exceção que ocorra durante a conversão e exiba uma mensagem de erro apropriada. O programa deve continuar rodando normalmente, independentemente de a conversão ser bem-sucedida ou falhar.

Folha de consulta

Use blocos try-catch para lidar com exceções de forma graciosa e evitar falhas no programa:

try {
  // Código que pode causar uma exceção
  int number = int.parse("abc");
} catch (e) {
  // Código que é executado se ocorrer uma exceção
  print("Something went wrong: $e");
}

O bloco try contém código potencialmente problemático, enquanto o bloco catch lida com quaisquer exceções que ocorram. A variável e contém informações sobre a exceção.

Experimente você mesmo

import 'dart:io';

void main() {
  // Ler a string de entrada
  String? input = stdin.readLineSync();
  
  // Display processing message
  print('Processing input: $input');
  
  // TODO: Escreva seu código abaixo
  // Use o bloco try-catch para converter a entrada em inteiro com segurança
  // Calcule o quadrado se a conversão for bem-sucedida
  // Lide com quaisquer exceções que ocorram durante a conversão
  
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Lógica & Fluxo