Consider the following example: as part of configuration for my program the user supplies an XML file which should in essence describe an acyclic graph, but my program finds a graph when loading it. This is a critical error, the program cannot continue. What exception should be thrown?
Other examples include trying to load a file in some specific format (say JPEG), but encountering an error along the way; or receiving some data over the network from another 3rd party program which should be correct, but isn't.
In essence - you're parsing some kind of data stream and find an error in it which shouldn't be there and which means that the program cannot continue as expected. What is the right type of exception to throw here?
(Note: This shouldn't be an ArgumentXXXException because this data isn't passed as a parameter to a method).