Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Исключения, создаваемые программистом
В С# имеется возможность обрабатывать исключения, создаваемые программистом. Для этого достаточно определить класс как производный от класса 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); } } }
|