When I used to work in c++, I didn't use to throw exception in constructor because of memory leak problem it can lead to, I had learned it the hard way. Anyone working with c++ knows how difficult and problematic memory leak can be.

But if you are in c#/Java, then you don't have this problem, because garbage collector will collect the memory. If you are using C#, I think it is preferable to use property for nice and consistent way to make sure that data constraints are guaranteed.
 
    
    public class MyClass
    {
        private string _text;
        public string Text 
        {
            get
            {
                return _text;
            } 
            set
            {
                if (string.IsNullOrWhiteSpace(value))
                    throw new ArgumentException("Text cannot be empty");
                _text = value;
            } 
        }

        public MyClass(string text)
        {
            Text = text;
            // continue with normal construction
        }
    }