-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathexcecoes.h
More file actions
80 lines (70 loc) · 1.85 KB
/
excecoes.h
File metadata and controls
80 lines (70 loc) · 1.85 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#ifndef DEC0006_LISTA_ENCADEADA_EXCECOES_H
#define DEC0006_LISTA_ENCADEADA_EXCECOES_H
#include <stdexcept>
// std::length_error
// std::logic_error
// std::out_of_range
// std::runtime_error
#include <string>
// std::string
/**
* @brief Exceção lançada caso se obter a posição de um dado que não está
* contido na lista encadeada.
*
*/
class ExcecaoDadoInexistente: public std::logic_error
{
public:
ExcecaoDadoInexistente();
};
/**
* @brief Exceção lançada caso se tente realizar operações em uma lista
* encadeada que não pode estar vazia.
*
*/
class ExcecaoListaEncadeadaVazia: public std::length_error
{
public:
ExcecaoListaEncadeadaVazia();
};
/**
* @brief Exceção lançada por funções que ainda não foram implementadas e não
* devem ser chamadas.
*
*/
class [[maybe_unused]] ExcecaoNaoImplementado: public std::runtime_error
{
public:
/**
* @brief Constrói uma ExcecaoNaoImplementado.
*
* @param nome O nome da função de onde a exceção está sendo lançada.
*/
explicit ExcecaoNaoImplementado(std::string const& nome);
};
/**
* @brief Exceção lançada caso se tente acessar uma posição inválida em uma
* lista encadeada.
*
*/
class ExcecaoPosicaoInvalida: public std::out_of_range
{
public:
ExcecaoPosicaoInvalida();
};
ExcecaoDadoInexistente::ExcecaoDadoInexistente():
std::logic_error{"esse dado nao se encontra na lista"}
{}
ExcecaoListaEncadeadaVazia::ExcecaoListaEncadeadaVazia():
std::length_error{"a lista encadeada esta vazia"}
{}
ExcecaoNaoImplementado::ExcecaoNaoImplementado(std::string const& nome):
std::runtime_error
{
std::string{"\""} + nome + "\" nao foi implementado ainda"
}
{}
ExcecaoPosicaoInvalida::ExcecaoPosicaoInvalida():
std::out_of_range{"posicao invalida na lista encadeada"}
{}
#endif