Большинствоисключений, приведенных в табл. 13.1, не требует особых пояснений, кроме исключенияNullReferenceException.Это исключение генерируется при попытке использовать пустую ссылку на несуществующий объект, например, при вызове метода по пустой ссылке.Пустойназывается такая ссылка, которая не указывает ни на один из объектов. Для того чтобы создать такую ссылку, достаточно, например, присвоить явным образом пустое значение переменной ссылочного типа, используя ключевое словоnull.Пустые ссылки могут также появляться и другими, менее очевидными путями. Ниже приведен пример программы, демонстрирующий обработку исключенияNullReferenceException.

// Продемонстрировать обработку исключения NullReferenceException.

using System;

class X { int x;

public X(int a) { x = a;

}

public int Add(X o) { return x + o.x;

}

}

// Продемонстрировать генерирование и обработку // исключения NullReferenceException. class NREDemo {

static void Main() {

X p = new X(10);

X q = null; // присвоить явным образом пустое значение переменной q int val;

try {

val = p.Add(q); // эта операция приведет к исключительной ситуации } catch (NullReferenceException) {

Console.WriteLine("Исключение NullReferenceException!");

Console.WriteLine("Исправление ошибки...\n");

// А теперь исправить ошибку, q = new X(9); val = p.Add(q);

}

Console.WriteLine("Значение val равно {0}", val);

}

}

Вот к какому результату приводит выполнение этой программы.

Исключение NullReferenceException!

Исправление ошибки...

Значение val равно 19

В приведенном выше примере программы создается класс X, в котором определяются членхи методAdd (), складывающий значение членахв вызывающем объекте со значением члена х в объекте, передаваемом этому методу в качестве параметра. Оба объекта класса X создаются в методеMain (). Первый из них (переменнаяр)инициализируется, а второй (переменнаяq)— нет. Вместо этого переменнойqприсваивается пустое значение. Затем вызывается методр. Add() с переменнойqв качестве аргумента. Но поскольку переменнаяqне ссылается ни на один из объектов, то при попытке получить значение членаq. хгенерируется исключениеNullReferenceException.

Получение производных классов исключений

Перейти на страницу:

Похожие книги