For error conditions arising during argument validation in stand-alone configuration tools.
Exception to do with IO while reading configuration.
This exception is for situation when one configuration file refers to another but the other one does not exist or fails some checks that are performed before opening it up.
Exception for situations where the content is invalid.
For situations where we are trying to convert a property value to a type and can't and the reason does not appear any coding error.
For situations where the properties don't contain what is expected.
For unexpected situations which imply that the assumptions of the author don't hold.
For situations where the property that is wanted is not there and returning null is not acceptable.