Which/when exception to throw if property is null?
I have the following class:

    class Foo
    {
        public Foo()
            : this(new List<Bar>())
        {
        }
        
        public Foo(IEnumerable<Bar> bars)
        {
            Bars = bars;
        }
        
        public IEnumerable<Bar> Bars { get; set; }
        
        public Bar GetSingleBar(Data data)
        {
            // this method returns a single Bar from the Bars property above
            // this method returns the Bar which matches the data parameter
            // this method should not return null
            // this method throws a NoBarsFoundException if
            //   (a) Bars is empty or
            //   (b) no bar in Bars matches the data
        }
    }

What should I do if `Bars` is `null`? Should I throw an exception in the setter for `Bars` or should I throw an exception in `GetSingleBar`? (The method `GetSingleBar` is the only method which uses the `Bars` property.)

Should I throw an `ArgumentException`, `ArgumentNullException`, `InvalidOperationException`, or `NoBarsFoundException`?
Which/when exception to throw if property is null?
===

I have the following class:

    class Foo
    {
        public Foo()
            : this(new List<Bar>())
        {
        }
        
        public Foo(IEnumerable<Bar> bars)
        {
            Bars = bars;
        }
        
        public IEnumerable<Bar> Bars { get; set; }
        
        public Bar GetSingleBar(Data data)
        {
            // this method returns a single Bar from the Bars property above
            // this method returns the Bar which matches the data parameter
            // this method should not return null
            // this method throws a NoBarsFoundException if
            //   (a) Bars is empty or
            //   (b) no bar in Bars matches the data
        }
    }

What should I do if `Bars` is `null`? Should I throw an exception in the setter for `Bars` or should I throw an exception in `GetSingleBar`? (The method `GetSingleBar` is the only method which uses the `Bars` property.)

Should I throw an `ArgumentException`, `ArgumentNullException`, `InvalidOperationException`, or `NoBarsFoundException`?