Objetivos
A função exit nos permite terminar nosso programa de forma imediata de forma controlada
retornando um valor positivo ou negativo indicando se o programa terminou com sucesso ou falha.
Sintaxe: include
#include <stdlib.h>
Sintaxe:
void exit(int status)
Onde
status: 0 ou EXIT_SUCCESS representa o status de OK ao encerrar um programa. Nenhum erro ocorreu.
1 ou EXIT_FAILURE representa o status de erro ao encerrar um programa. Ocorreu algum
erro durante a execução.
Exemplo 1
#include <stdio.h>
#include <stdlib.h> //exit EXIT_FAILURE
int main()
{
int a = 0;
if(a == 0)
exit(EXIT_FAILURE);
printf("%d",1/a);
}
Saída
-
A função exit pode ser utilizada em conjunto com a função atexit que será vista mais adiante.
A função abort termina nosso programa de forma incondicional e imediata usada quando
ocorre um erro crítico sem possibilidade de continuação do programa.
Sintaxe: include
#include <stdlib.h>
Sintaxe: abort
void abort(void)
Onde
-
Exemplo 2
#include <stdio.h>
#include <errno.h> //errno
int main()
{
int a = 0;
if(a == 0)
{
errno = 1; //Operation not permitted
perror("divisao por zero");
abort();//errno 134
}
else
printf("%d",1/a);
}
Saída
divisao por zero: Operation not permitted
A função assert é utilizada para checar condições e imprimir uma mensagem. Caso a
condição seja falsa(0), assert lança um erro, assertion failure, e termina o programa
imediatamente sem recuperação.
Sintaxe: include
#include <assert.h>
Sintaxe: assert
void assert(int expression);
Onde
expression: expressão para validação
Exemplo 3
#include <stdio.h>
#include <stdlib.h>
#include <assert.h> //assert()
int main()
{
int a = 0;
assert(a > 0);
printf("%d",1/a);
}
Saída
main.out: main.c:8: main: Assertion `a > 0' failed.
A assert não deve ser utilizada para validações de entrada de dados do usuário
como campo vazio, por exemplo. Esse tipo de validação deve ser feita com if/else e
retorno de valores ou mensagens.
A função atexit é utilizada em conjunto com a função exit para invocar uma função
para realizar rotinas de encerramento em nossos programas para liberação de arquivos aberto,
memória alocada, conexões com banco de dados ou outros recursos semelhantes.
Sintaxe: include
#include <stdlib.h>
Sintaxe: atexit
int atexit(void (*func)(void))
Onde
func: ponteiro para função callback para ser invocada por atexit
Retorno
0 registro da função com sucesso
1 registro da função com falha
Exemplo 4
#include <stdio.h>
#include <stdlib.h>
void funcao()
{
printf("atexit invocou funcao()\nDivisão por zero tratada.\nOutros tratamentos\nEncerrando...");
//outras funções aqui
}
int main()
{
int ret = atexit(funcao); //registro de callback
if(ret == 1) //aborta se função não registrada
abort();
int a = 0;
if( a == 0) //divisão por zero
{
exit(1); //invoca atexit
}
printf("%d",1/a);
return 0;
}
Saída
atexit invocou funcao()
Divisão por zero tratada.
Outros tratamentos
Encerrando...
Histórico de atualizações
- 05/05/2025 - versão inicial
Os cursos oferecidos nesta página são cursos fornecidos por parceiros. Ao comprar um curso clicando
em seu banner, você está ajudando a manter o projeto TutorialDev vivo. Os sites dos cursos parceiros utilizam cookies.