Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Исключения, создаваемые программистом






В С# имеется возможность обрабатывать исключения, создаваемые программистом. Для этого достаточно определить класс как производный от класса Exception. Как правило, определяемые программистом исключения, должны быть производными от класса ApplicationException, " родоначальника" иерархии, зарезервированной для исключений, связанных с прикладными программами. Созданные производные классы не должны ничего реализовывать, поскольку одно лишь их существование в системе типов уже позволит использовать их в качестве исключений.

Классы исключений, создаваемые программистом, будут автоматически иметь свойства и методы, определенные в классе Exception и доступные для них. Конечно, один или несколько элементов в новых классах нужно переопределить.

class RangeArrayException: ApplicationException

{

// Реализуем стандартные конструкторы,

public RangeArrayException(): base() { }

public RangeArrayException(string str): base(str) { }

// Переопределяем метод ToStringO для класса RangeArrayException.

public override string ToString()

{

return Message;

}

}

class RangeArray

{

int[] arr; //массив

int size; //кол-во элементов

int left_index, right_index; //левая и правая границы массива

 

public RangeArray(int left, int right)

{

if(right< left) throw new RangeArrayException(" Левый индекс больше правого! ");

arr=new int [right-left+1];

size=right-left+1;

left_index=left;

right_index=right;

}

public int Size

{

get { return size; }

}

//индексатор

public int this[int index]

{

get

{

if (index > = left_index & & index < = right_index) return arr[index-left_index];

else throw new RangeArrayException(" Индекс не попадает в диапазон");

}

set

{

if (index > = left_index & & index < = right_index) arr[index-left_index] = value;

else throw new RangeArrayException(" Индекс не попадает в диапазон");

}

}

}

class Program

{

static void Main(string[] args)

{

try

{

RangeArray a1 = new RangeArray(1, 10);

 

Random r = new Random();

 

Console.WriteLine(" Длина массива а1=" + a1.Size);

for (int i = 1; i < 10; i++)

{

a1[i] = r.Next(0, 100);

Console.Write(a1[i] + " ");

}

Console.WriteLine();

 

RangeArray a2 = new RangeArray(-5, 5);

Console.WriteLine(" Длина массива а2=" + a2.Size);

for (int i = -5; i < 5; i++)

{

a2[i] = r.Next(0, 100);

Console.Write(a2[i] + " ");

}

Console.WriteLine();

 

}

catch (RangeArrayException e)

{

Console.WriteLine(e);

 

}

try

{ //с ошибкой

 

RangeArray a3 = new RangeArray(5, -5);

}

catch (RangeArrayException e)

{

Console.WriteLine(e);

}

try

{ //с ошибкой

 

RangeArray a3 = new RangeArray(-5, 5);

Random r = new Random();

for (int i = 0; i < 11; i++)

{

a3[i] = r.Next(0, 100);

Console.Write(a3[i] + " ");

}

Console.WriteLine();

}

catch (RangeArrayException e)

{

Console.WriteLine(e);

}

}

}

 

 


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.008 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал