Программирование >>  Программирование на языке c++ 

1 ... 95 96 97 [ 98 ] 99 100 101 ... 159


#define у 400 будет возникать при динамическом выделении памяти

void main(void) { int **array; try {

array = new int*[x]; for(int i=0;i<x;i++)

array[i] = new int[y];

блок catch будет выполнен, если возникает ошибка выделения памяти

catch(xalloc) { cout not enough memory\n ;

exit(1); } завершение программы for(int i=0;i<x;i++) заполнение массива какими-то значениями for(int j=0;j<y;j+-t-)

array[i][j] = i*j; for{i=0;i<x;i-t-t-) вывод значений элементов массива for(int j=0;j<y;j+-t-)

cout array[i][j] ; cout endl; for{i=0;i<x;i-t-f-)

delete[] array[i]; delete[] array;

С помощью директив препроцессора #defme в программе заведомо задан размер двухмерного массива, для которого не может быть выделена память (из-за недостатка памяти в компьютере). Поэтому после запуска программы на выполнение на экране появится сообщение not enough memory (недостаточно памяти), и программа завершит свою работу. Для правильной работы программы необходимо изменить размер массива, например, задать те значения, которые были использованы в § 2.5.

В качестве индикатора исключения можно выбирать не только тип класс , но и другие типы. Во втором приме-



р е демонстрируется использование типа const char* (т. е. указателя на строку типа const).

#include <iostream.h> #include <stdlib.h> f{int a)

{ if (a<0) throw exception\n ;

return a;

void main(void) { int a; try {

for(;;) { cout Enter a\n ;

cin a;

cout a = f{a) endl;

поскольку блок catch перехватывает исключения типа const char*, он будет активизирован из функции f(int а) catch(const char *str) {

cout str; вывод сообщения exception

(см. функцию f) exit(1); } завершение программы

Если в программу вводить целые значения, которые больше нуля или равны нулю, то эти значения выводятся на экран. Если ввести значение меньше нуля, то возникает исключение, на экран выводится сообщение exception и программа завершает работу. Функция программы f(int а) возвращает целые значения (если возвращаемое значение опущено при объявлении функции, то оно по умолчанию будет целым).

Третья программа показывает класс с конструктором, который используется в качестве индикатора исключения.

#include <iostream.h> #include <stdlib.h>



struct overflow { класс (структура) индикатор исключения overflow(double а, double b) конструктор класса с двумя

параметрами { cout << overflowing\n ; } вывод сообщения

о переполнении

double f(double x,double у) какая-то функция { if (х-1-у> 1000000.0) throw overflow(x,y); генерация

исключения

return х*у;

void main(void) { double А,В; try {

for(;;) { cout Enter A,B:\n ; cin A B;

cout A*B = f(A,B) endl;

catch(overflow& of)

{ abortO; } завершение программы при переполнении

Программа завершает работу с выдачей сообщения Abnormal program termination, если будет выполнено условие: х+у> 1000000.0.

Четвертая программа показывает, что блоки try могут быть вложенными.

#include <iostream.h> #include <stdlib.h> struct overflow { overflow(double a, double b) { cout overflowing\n ; }

double f(double x,double y) функция f, которая генерирует { if (x-l-y> 1000000.0) throw overflow(x,y); исключение



1 ... 95 96 97 [ 98 ] 99 100 101 ... 159

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика