Dưới đây là một đoạn mã:ReSharper: làm thế nào để loại bỏ "có thể xảy ra 'System.NullReferenceException'" cảnh báo
IUser user = managerUser.GetUserById(UserId);
if (user==null)
throw new Exception(...);
Quote quote = new Quote(user.FullName, user.Email);
Mọi việc đã ổn ở đây. Nhưng nếu tôi thay thế "nếu" phù hợp với một sau:
ComponentException<MyUserManagerException>.FailIfTrue(user == null, "Can't find user with Id=" + UserId);
nơi thực hiện chức năng là như sau:
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;
}
}
...
}
Sau đó resharper tạo cho tôi một cảnh báo: Có thể 'System.NullReferenceException' chỉ vào cách sử dụng 1 đối tượng 'người dùng'.
Q1. Tại sao nó tạo ra ngoại lệ như vậy? Theo như tôi thấy nếu 'user == null' thì ngoại lệ sẽ được tạo và việc thực hiện sẽ không bao giờ đạt đến điểm sử dụng.
Q2. Làm thế nào để loại bỏ cảnh báo đó? Xin lưu ý: 1. Tôi không muốn ngăn chặn cảnh báo này với các bình luận (Tôi sẽ có rất nhiều phần tương tự và không muốn chuyển đổi mã nguồn của tôi trong 'garbase nhận xét); 2. Tôi không muốn thay đổi cài đặt chia sẻ lại để thay đổi vấn đề này từ cảnh báo thành 'gợi ý' của 'gợi ý'.
Cảm ơn.
Bất kỳ ý tưởng nào đều được hoan nghênh!
P.S. Tôi đang sử dụng resharper 5.1, MVSV 2008, C#
Tôi ước điều đó đúng ... Resharper 5.1 không xác định chính xác 'Debug.Assert (user! = Null);' và tăng cảnh báo. Tôi có cần cấu hình gì không? –
Uh, R # 5.1 là khá lỗi thời, vì vậy tôi không có gì để kiểm tra vấn đề của bạn. Tuy nhiên, một số gợi ý: Hãy chắc chắn rằng mã của bạn đúng tham chiếu đến lớp 'System.Diagnostics.Debug' như là hợp đồng mã đã được định nghĩa cho nó, và không cho các phương thức tùy ý với tên/chữ ký đó. Ngoài ra, hãy đảm bảo rằng cấu hình xây dựng được đặt thành Debug (nếu không mã này nằm ngoài phạm vi và do đó cảnh báo sẽ xuất hiện!). – Lucero
'Debug.Assert' hoạt động, nhưng chỉ trong chế độ Debug. –