NullReferenceException
NullReferenceException бросает среда,
если через ссылку null вызывают поле
или метод. Явно throw new NullReferenceException
почти не используют - исключение служит
сигналом ошибки в коде. Проверку оформляют
через catch
или анализ nullable-типов.
Синтаксис
string text = null;
int len = text.Length;
Пример
Давайте обратимся к члену у null
и поймаем исключение:
using System;
class Program
{
static void Main()
{
try
{
string s = null!;
int len = s.Length;
}
catch (NullReferenceException)
{
Console.WriteLine("fail");
}
}
}
Результат выполнения кода:
"fail"
Пример
Давайте вызовем метод у null-ссылки:
using System;
class Program
{
static void Main()
{
try
{
string s = null!;
s.Contains("a");
}
catch (NullReferenceException)
{
Console.WriteLine("fail");
}
}
}
Результат выполнения кода:
"fail"
Пример
Давайте избежим ошибки проверкой на
null:
using System;
class Program
{
static void Main()
{
string s = null!;
if (s != null)
{
Console.WriteLine(s.Length);
}
else
{
Console.WriteLine("skip");
}
}
}
Результат выполнения кода:
"skip"
Смотрите также
-
InvalidOperationException,
когда объект не null, но операция запрещена -
ObjectDisposedException,
когда ресурс уже закрыт -
блок
catch,
которым ловят сбой -
ArgumentOutOfRangeException,
когда ошибка в аргументе метода