Exceções

O Tratamento de Exceções nos permite reagir a circunstancias excepcionais no nosso programa transferindo o controle para funções especiais chamadas handlers.
 

Para que possamos capturar uma exceção precisamos determinar uma área de inspeção do código, ou seja, um trecho de código onde se um erro ocorrer será detectado. Para isso existe o bloco chama try. quanto uma situação excepcional ocorre dentro desse trecho de código é lançado uma excessão que transfere o controle para um tratador de excessão.

 
Uma situação excepcional é lançada com o comando throw, que quando é lançado dentro de um bloco try o controle passa para o tratador declarado pelo comando
catch.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// exceptions
#include <iostream>

using namespace std;

int main () {
    try {
           throw 20;
    }
    catch (int e) {
     cout << "An exception occurred. Exception Nr. " << e << endl;
    }
return 0;
}
An exception occurred. Exception Nr. 20


Exceção padrão


1
2
3
4
5
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
// standard exceptions

#include <iostream>
#include <exception>

using namespace std;

class myexception: public exception {
    virtual const char* what() const throw() {
    return "My exception happened";
    }
} myex;


int main () {
   try {
      throw myex;
   }
   catch (exception& e) {
      cout << e.what() << endl;
   }
   return 0;
}
My exception happened.



exceptiondescription
bad_alloc thrown by new on allocation failure
bad_cast thrown by dynamic_cast when fails with a referenced type
bad_exception thrown when an exception type doesn't match any catch
bad_typeid thrown by typeid
ios_base::failure thrown by functions in the iostream library
 
Excessão Fila Cheia
 

1
2
3
4
5
6
7
8
9
10
11
12

//arquivo excessao FilaCheia.h

#include <exception>
using namespace std;

class ExcessaoFilaCheia : public exception {
   public:  
        virtual const char* what() const throw() {
             return("Excessao Fila Cheia!");

         }
};



Última atualização: sexta-feira, 9 mar. 2018, 07:10