Большинствоисключений, приведенных в табл. 13.1, не требует особых пояснений, кроме исключения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.
Получение производных классов исключений