Tratamento de exceções em C
Implemente estratégias robustas de tratamento de erros sem um mecanismo integrado de exceções.
Tratamento de exceções em C é uma aula grátis de C Academy no CoddyKit. Esta é a aula 3 de 3. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de C Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de C Academy inclui 3 aulas no total.
Introdução ao tratamento de exceções
Tratamento de exceções em C
Ao contrário de linguagens como C++ e Java, C não possui tratamento de exceções integrado.
Nesta lição, você aprenderá:
- Como tratar erros usando valores de retorno.
- Como usar
setjmpelongjmppara o tratamento de exceções. - Como usar
errnopara tratar erros do sistema.

Tratando erros com valores de retorno
Tratando erros com valores de retorno
A maneira mais simples de tratar erros em C é usar valores de retorno.
Exemplo:
int divide(int a, int b) {
if (b == 0) return -1; // Error code
return a / b;
}
O chamador verifica o valor de retorno em busca de erros.
Exemplo: tratamento de erros com valores de retorno
Exemplo: tratamento de erros com valores de retorno
Este programa verifica se há divisão por zero usando valores de retorno.
#include <stdio.h>
int divide(int a, int b) {
if (b == 0) {
printf("Error: Division by zero!\n");
return -1;
}
return a / b;
}
int main() {
int result = divide(10, 0);
if (result != -1) {
printf("Result: %d\n", result);
}
return 0;
}Usando setjmp e longjmp para o tratamento de erros
Usando setjmp e longjmp para o tratamento de erros
As funções setjmp e longjmp permitem saltos não locais, simulando o tratamento de exceções.
Etapas:
- Use
setjmp()para marcar um ponto de recuperação. - Use
longjmp()para voltar quando ocorrer um erro.
Exemplo: usando setjmp e longjmp
Exemplo: usando setjmp e longjmp
Este programa usa setjmp e longjmp para o tratamento de erros.
#include <stdio.h>
#include <setjmp.h>
jmp_buf buffer;
void errorHandler() {
printf("Error occurred! Jumping back to safe state.\n");
longjmp(buffer, 1);
}
int main() {
if (setjmp(buffer) == 0) {
printf("Executing main program...\n");
errorHandler();
} else {
printf("Recovered from error.\n");
}
return 0;
}Usando errno para tratar erros do sistema
Usando errno para tratar erros do sistema
A variável errno armazena códigos de erro das chamadas do sistema.
Exemplo:
#include
Funções como fopen() definem errno quando ocorrem erros.
Exemplo: usando errno para manipular arquivos
Exemplo: usando errno para manipular arquivos
Este programa verifica errno ao abrir um arquivo inexistente.
#include <stdio.h>
#include <errno.h>
int main() {
FILE *file = fopen("nonexistent.txt", "r");
if (!file) {
perror("Error opening file");
}
return 0;
}Práticas recomendadas para o tratamento de erros
Práticas recomendadas para o tratamento de erros
Para gerenciar erros de maneira eficaz:
- Verifique os valores de retorno das funções.
- Use
errnopara tratar erros do sistema. - Use
setjmpelongjmpsomente quando necessário.
Resumo
Resumo
Nesta lição, você aprendeu:
- Como tratar erros usando valores de retorno.
- Como
setjmpelongjmpsimulam o tratamento de exceções. - Como usar
errnopara detectar erros do sistema.
Esta é a conclusão da seção Depuração e Tratamento de Erros em C!

Perguntas Frequentes
A aula “Tratamento de exceções em C” é grátis?
Sim — o texto completo de “Tratamento de exceções em C” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de C Academy, atualize para CoddyKit PRO. O curso de C Academy inclui 3 aulas no total.
O que vou aprender em “Tratamento de exceções em C”?
Implemente estratégias robustas de tratamento de erros sem um mecanismo integrado de exceções. Você pratica C Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar C Academy?
Nenhuma experiência prévia é necessária. C Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 3.
Quanto tempo leva a aula “Tratamento de exceções em C”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de C Academy?
Sim. Cada aula de C Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Depuração com GDB
- Erros comuns em tempo de execução
- Tratamento de exceções em C