Personally I tend to prefer the factory methods for a couple of reasons...

Firstly, I find them a lot more obvious when reading the code.
Secondly, although it is legal for a constructor to throw am exception, it never seems quite right; a method that throws an exception seems a lot more natural.