#include <iostream.h>
int main()
{
int* buffer;
try
{
buffer = new int[256];
if (buffer == NULL)
throw "Memory allocation failed!";
else
delete buffer;
}
catch(char* exception)
{
cout << exception << endl;
}
return 0;
}
Когда в программе выбрасывается исключение, выполнение программы продолжается с первой строки блока catch. (Оставшаяся в блоке try часть текста программы не выполняются.) Единственный оператор блока catch просто выводит сообщение на консоль, после чего выполняется оператор return и программа завершает работу.
Если выделение памяти пройдет успешно, будет выполнен весь блок try и отведенная под buffer память будет возвращена операционной системе. В этом случае весь блок catch будет пропущен и программа перейдет непосредственно к выполнению оператора return.
Объекты исключений. Можно создать специальный класс для определенных типов исключений, которые могут генерироваться в ваших программах. Далее приведен текст программы, в которой определяется универсальный класс исключений с именем MyException. В случае неудачного завершения процедуры выделения памяти главная программа создаст объект этого класса и вызовет исключение, параметром которого и будет этот объект. Блок catch перехватит параметр — объект класса MyException, вызовет метод GetError() этого объекта и выберет с его помощью строку сообщения об имевшей место ошибке, а затем отобразит эту строку на экране.
#include <iostream.h>
class MyException
{
protected:
char* m_msg;
public:
MyException(char *msg) { m_msg = msg; }
~MyException(){}
char* GetError() {return m_msg; };
};
int main()
{
int* buffer;
try
{
buffer = new int[256];
if (buffer == NULL)
{
MyException* exception =
new MyException("Memory allocation failed!");
throw exception;
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.