throw ArchiveException instead of Exception