If you hit an exception at a "bad time" e.g. when writing files for a newly flushed segment, IndexWriter declares it a tragedy and secretly closes itself as a side effect of the exception.
Subsequent operations will throw an ACE with the exception that caused the tragedy as its cause.
This requires messy code, if you want to know when this happened to you, since the first exception doesn't make it clear that it was "tragic".
I think we should make it easier to know when this happens?
Maybe we could instead throw a new exception (IWClosedByTragedy or something), or maybe we add a getter (.getTragicException) to IW?