Из книги Джеффа Фризена "Java I / O, NIO and NIO.2":
FileAlreadyExistsException
является примером необязательного конкретного исключения. Это необязательно, потому что он генерируется, когда базовая операционная система может обнаружить конкретную ошибку, приводящую к исключению. Если ошибка не может быть обнаружена, вместо нее выдается ее IOException
предок.