the archive is corrupted? or 1 or more entries in the archive are corrupted? i'm sorry, but
i found your description confusing. in either case, the nature of the archive's "structure"
is such that you have to (try to) uncompress each entry in the archive to know if something is
wrong.
in other words, if the archive itself is bad - what that means is unclear - it might still be
possible to step through it to salvage some or all of the entries. for that you would need
a routine. there is nothing in a zip archive that says "i'm good to go". you have to tell
the archiver to unzip it. if it can't, then you need some handwritten routine to see what
can be done. but a "corrupted archive" could mean anything. realistically, the only way
to know if the archive might be bad is to have a crc available when you acquired it. you
wouldn't have to uncompress all the entries, but you would have to scan all the bytes to
check the crc.
if an entry is corrupted, and assuming the archiver "keep(s) a handle on it", the easiest
solution is to unzip the archive and to rezip the entries that were actually created successfully.
(this may seem primitive, but it's actually how some archivers handle deletions, given how
the archive is structured in the first place.) in the case of a bad entry, it effectively removes
itself since the archiver can't do anything with it. you simply rezip the files which were
handled successfully. this, you could handle programmatically. otherwise, the only way
to know something is wrong is to tell the archiver to do what it's meant to do: unzip itself.