Когда вы обрабатываете SELECT
через phpmyadmin, за кулисами, он иногда добавляет LIMIT 0,30
и / или его
if (user == null) выбросить новое исключение (...); Цитата цитата = новая цитата (user.FullName, user.Email); Здесь все хорошо. ...
Вот фрагмент кода:
IUser user = managerUser.GetUserById(UserId);
if ( user==null )
throw new Exception(...);
Quote quote = new Quote(user.FullName, user.Email);
Здесь все нормально. Но если я заменю строку «if» следующей:
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, чтобы изменить эту проблему с предупреждения на «подсказку».
Спасибо.
Любые мысли приветствуются!
PS Я использую resharper 5.1, MVSV 2008, C #