Вот кусок кода:
IUser user = managerUser.GetUserById(UserId);
if ( user==null )
throw new Exception(...);
Quote quote = new Quote(user.FullName, user.Email);
Здесь все хорошо. Но если заменить строку «если» на следующую:
ComponentException<MyUserManagerException>.FailIfTrue(user == null, "Can't find user with Id=" + UserId);
, где реализация функции следующая:
public abstract class ComponentException<T> : ComponentException
where T : ComponentException, new()
{
public static void FailIfTrue(bool expression, string message)
{
if (expression)
{
T t = new T();
t.SetErrorMessage(message);
throw t;
}
}
//...
}
Затем ReSharper выдает мне предупреждение: возможное исключение System.NullReferenceException, указывающее на первое использование объекта «пользователь».
Q1. Почему это порождает такое исключение? Насколько я вижу, если user==null
, то будет сгенерировано исключение, и выполнение никогда не достигнет точки использования.
Q2. Как убрать это предупреждение? Пожалуйста, обратите внимание:
1. Я не хочу подавлять это предупреждение комментариями (у меня будет много подобных частей, и я не хочу превращать мой исходный код в 'закомментированный мусор);
2. Я не хочу изменять настройки ReSharper, чтобы изменить эту проблему с предупреждения на «предложение» с «подсказкой».
Спасибо.
Любые мысли приветствуются!
P.S. Я использую Resharper 5.1, MVSV 2008, C #