The app.config version works fine for me with SQL Server. If the connection string is OK, it connects and all is good. If the connection string is formatted correctly but contains an invalid Data Source then I get a SQLException on the connect. If I have an invalid entry in the connection string such as a typo then an ArgumentException is thrown and the SQLException will not be caught.
On what statement do you see an exception, on the connect or on the read from app.config?
Is it possible that you are not getting a SQLException because it is not actually a SQL error being reported?
I also found a reference to the null object error occurring if you don't have a reference to the System.Configuration.dll in your project although mine will not even compile without this,