Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Função exit
  2. Função abort
  3. Função assert
  4. Função atexit

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...
  1. 05/05/2025 - versão inicial