2016-09-22 14 views
6

Trong khi tìm kiếm kiểm tra null vs bắt NullReferenceException, tôi đi qua này.Làm thế nào để NullReferenceException là đắt hơn bất kỳ ngoại lệ khác trong CLR?

Ghi lại một tham số rỗng là một trong những hoạt động tốn kém nhất mà CLR có thể thực hiện và điều này có thể có tác động hiệu suất nghiêm trọng nếu mã của bạn đang ném nhiều NullReferenceExceptions. Thử nghiệm cho vô hiệu và làm một cái gì đó khác về nó (thậm chí ném một ngoại lệ!) Là một hoạt động rẻ hơn.

Đây là liên kết của câu hỏi mà tôi đã tìm thấy. When is handling a null pointer/reference exception preferred over doing a null check?

Tôi tự hỏi làm thế nào để bắt NullReferenceException đắt hơn kiểm tra và ném ngoại lệ.

[không thể bình luận đó vì số danh tiếng đủ]

Trả lời

8

Vấn đề ở đây không phải là một NullReferenceException đắt hơn bất kỳ ngoại lệ khác. Chi phí của các ngoại lệ ném đến từ việc mở khóa ngăn xếp và điều đó phụ thuộc nhiều vào cấu trúc cuộc gọi hơn là ngoại lệ cụ thể. Tôi tin rằng điểm mà doc đang cố gắng tạo ra là nó rẻ hơn để bảo vệ an toàn chống lại ngoại lệ ngay từ đầu, hơn là xử lý nó khi nó bị ném.

Các vấn đề liên quan