|
Программирование >> Программирование на языке c++
#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); исключение
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |