Duvida em Exceções
28/11/2007
0
Estou estudando EXCECÕES mas estou com umas duvidas no codigo abaixo. As linhas em negrito eu estou com duvida, se alguem poder me dar umas dicas do significado, eu agradeço.
[b:48e9c0ef74]Enum Erro {ExPilhaCheia, ExPilhaVazia, ExTamanhoInvalido};[/b:48e9c0ef74]
CPilha::CPilha (int tam) {
if(tam >0) {
vet=new int[tam];
maxElementos = tam;
topo = 0; }
else {
[b:48e9c0ef74]Erro err = ExTamanhoInvalido;
Throw err;[/b:48e9c0ef74]
}
}
try {
int tam;
cout<<´Digite o tamanho da Pilha: ´;
cin>> tam;
CPilha p(tam);
}
[b:48e9c0ef74]catch (Erro e) {
switch (e) {
case ExTamanhoInvalido cout<< ´Tamanho invalido´;
case ExPilhaazia: cout<< ´Pilha Vazia´;
case ExPilhaCheia: cout<< ´Pilha cheia´;[/b:48e9c0ef74] }
}
[b:48e9c0ef74]Enum Erro {ExPilhaCheia, ExPilhaVazia, ExTamanhoInvalido};[/b:48e9c0ef74]
CPilha::CPilha (int tam) {
if(tam >0) {
vet=new int[tam];
maxElementos = tam;
topo = 0; }
else {
[b:48e9c0ef74]Erro err = ExTamanhoInvalido;
Throw err;[/b:48e9c0ef74]
}
}
try {
int tam;
cout<<´Digite o tamanho da Pilha: ´;
cin>> tam;
CPilha p(tam);
}
[b:48e9c0ef74]catch (Erro e) {
switch (e) {
case ExTamanhoInvalido cout<< ´Tamanho invalido´;
case ExPilhaazia: cout<< ´Pilha Vazia´;
case ExPilhaCheia: cout<< ´Pilha cheia´;[/b:48e9c0ef74] }
}
Novato-mg
Curtir tópico
+ 0
Responder
Posts
29/11/2007
Rodc
Você só pode dar throw em uma classe filha de Exception. No seu código ´Err´ é uma variável do tipo Enum.
Exemplos de uso de Throw:
O que você pode fazer é colocar o erro dentro da mensagem de erro:
ou criar uma classe de erro para cada tipo de erro, podendo assim pegar o tipo no catch. Exemplo de uma classe de excessão (sem passagem de parâmetro):
Exemplo de Uso:
Exemplos de uso de Throw:
Throw Exception("Erro teste"); Throw EInvalidNumber("Número inválido");
O que você pode fazer é colocar o erro dentro da mensagem de erro:
Throw Exception("Tamanho invalido");
No .h: class EPilhaCheia : public Exception { public: __fastcall EPilhaCheia(); }; No .cpp: __fastcall EPilhaCheia::EPilhaCheia() : Exception("") { }
Exemplo de Uso:
try { throw EPilhaCheia(); } catch (EPilhaCheia &e) { Beep(); }
Responder
Clique aqui para fazer login e interagir na Comunidade :)