One thing to be careful of about throwing exceptions in the constructor: because the caller (usually) will have no way of using the new object, the constructor ought to be careful to avoid acquiring unmanaged resources (file handles etc) and then throwing an exception without releasing them. For example, if the constructor tries to open a FileInputStream and a FileOutputStream, and the first succeeds but the second fails, you should try to close the first stream. This becomes harder if it's a subclass constructor which throws the exception, of course… it all becomes a bit tricky. It's not a problem very often, but it's worth considering.
И почему у вас loadConfig() отделён он validateConfig()
Крайне сложный и спорный вопрос.
Я не соглашусь, что авторы должны что-то доказывать, так как сайт извлекает определенную прибыль продавая конкретно эту книгу. Ситуация аналогична торговой точке, зарабатывающей на торговле краденым — к ним приходят и говорят,- эта вещь моя, верните! А они в ответ — а чем докажете!? Хотя они точно знают, что вещь краденая. И их ответ должен был бы звучать несколько иначе — извините, куда Вам перечислить деньги, которые мы на Вас заработали?
Думаю, совсем правильный ответ должен быть приблизительно таким — мы будем рады исправить ситуацию, удалив указанный Вами материал и разместив на нашем сайте ссылку на Ваш ресурс или ссылку на онлайн магазин, осуществляющим продажу Вашего произведения.
Всем хорошо — и на Вашем сайте не пропадает материал, и авторы довольны. А если это еще и магазин, то можно на рефералах подзаработать. И только в случае особых сомнений просить прислать какое-то подтверждение. В конце концов, у Вас то точно нет никаких прав на этот контент, так пусть это будет чьей-то чужой проблемой, а не Вашей.