Use this exception type if an exception is not expected. Use it before you let the case empty!
But use this exception only for dedicated exceptions! For example:
//this routine does nothing with a file because it is null. But the routine can throw an IOException, but only if the file is used.
//because the file is null, it will never throw it. Only this IOException is catched because the calling routine should not throw that.
void exampleRoutine() throws AnyException{
File myFile = null;
try{ callAnything(parameters, myFile); } } catch(IOException){ throw new UnexpectedException(exc); }
...
}