Hãy nói rằng tôi có một phương pháp:
public void DoSomething(ISomeInterface someObject)
{
if(someObject == null) throw new ArgumentNullException("someObject");
someObject.DoThisOrThat();
}
Tôi đã được đào tạo để tin rằng việc ném lỗi ArgumentNullException
là "chính xác" nhưng lỗi "Tham chiếu đối tượng không được đặt thành phiên bản của đối tượng" có nghĩa là tôi có lỗi.
Tại sao?
Tôi biết rằng nếu tôi đã lưu trữ tham chiếu someObject
và sử dụng nó sau này, thì tốt hơn hết là kiểm tra tính vô hiệu khi được truyền vào và không thành công sớm. Tuy nhiên, nếu tôi hủy đăng ký nó trên dòng tiếp theo, tại sao chúng ta phải làm kiểm tra? Nó sẽ ném một ngoại lệ theo cách này hay cách khác.
Chỉnh sửa :
Nó chỉ xảy ra với tôi ... có phải nỗi sợ null bị hủy bỏ đến từ một ngôn ngữ như C ++ không kiểm tra cho bạn (tức là nó chỉ cố thực hiện một số phương thức tại vị trí bộ nhớ zero + phương thức bù)?