Os erros de tempo de execução, também conhecidos como exceções, são problemas que ocorrem enquanto um programa está a ser executado. Ao contrário dos erros de sintaxe que são apanhados pelo compilador ou pelo interpretador antes do programa ser executado, os erros de tempo de execução só se manifestam quando o programa está realmente em funcionamento. Estes erros podem surgir de várias situações, como operações matemáticas inválidas, tentativas de aceder a um índice fora dos limites de uma lista ou mesmo quando o programa tenta utilizar um recurso não disponível, como um ficheiro em falta.
Imagina que estás a correr uma corrida de obstáculos. Antes da corrida começar, podes verificar o teu equipamento e percurso, mas só quando realmente corres é que te podes deparar com imprevistos, como um sapato desapertado ou um obstáculo mal posicionado. Estes são os nossos erros de tempo de execução.
Exemplos Práticos
Vamos explorar alguns exemplos simples em C++, PHP e Python para ilustrar como ocorrem os erros de tempo de execução.
C++
#include <iostream>
int main() {
int numeros[3] = {1, 2, 3};
// Tentativa de aceder a um índice fora dos limites
std::cout << numeros[5] << std::endl; // Erro de tempo de execução
return 0;
}
No exemplo acima, estamos a tentar aceder a um elemento que está fora dos limites do array numeros
. Este erro manifestar-se-á apenas durante a execução do programa.
PHP
<?php
$numero = 5;
// Divisão por zero
$resultado = $numero / 0;
echo $resultado; // Erro de tempo de execução
?>
Em PHP, a tentativa de dividir por zero gera um erro de tempo de execução, pois é uma operação matemática inválida.
Python
numeros = [1, 2, 3]
# Tentativa de aceder a um índice fora dos limites
print(numeros[5]) # Erro de tempo de execução
Similar ao exemplo em C++, este erro em Python ocorre quando tentamos aceder a um elemento fora do alcance do array numeros
.
Prevenção e Tratamento de Erros
Reconhecer erros de tempo de execução é o primeiro passo, mas também é importante saber como lidar com eles. Muitas linguagens de programação disponibilizam mecanismos de tratamento de exceções que ajudam os programadores a gerir esses erros de forma robusta e amigável para o utilizador.
Exemplo de Tratamento em Python
numeros = [1, 2, 3]
try:
print(numeros[5])
except IndexError as e:
print(f"Aviso: {e}")
No exemplo acima, usamos um bloco try-except
em Python para capturar e lidar com o erro, fornecendo uma mensagem de aviso amigável em vez de permitir que o programa falhe abruptamente.
Resumo do Capítulo
Os erros de tempo de execução ocorrem durante a execução de um programa e podem causar falhas inesperadas. A identificação e o tratamento adequado desses erros são cruciais para garantir que os programas funcionem corretamente em todas as situações possíveis. O uso de blocos de tratamento de exceções ajuda a criar aplicações mais robustas e confere uma melhor experiência ao utilizador.
Quiz
- O que diferencia um erro de tempo de execução de um erro de sintaxe?
- Dê um exemplo de uma situação que poderia causar um erro de tempo de execução em qualquer linguagem de programação.
- Como se pode prevenir que um programa falhe devido a um erro de tempo de execução em Python?
- Explique o que aconteceria se tentássemos aceder a um índice fora dos limites de um array numérico em C++.
- Porquê é importante lidar de forma adequada com erros de tempo de execução?