Journey emails are Triggered Send Definitions, so subscribers go in one at a time. If one fails, it won't cause the other ones to fail, but it may pile up the trigger queue -- requiring some intervention to resolve.
If there's no opportunity to validate the send audience beforehand, it's best to proactively check you send context values and then utilize the RaiseError() function to skip the subscribers. I code every email using this pattern (maybe not with the RaiseError(), but at least with my "no-naked personalization strings" rule:
%%[
var @contextField1
set @contextField1 = AttributeValue("contextField1")
if not empty(@contextField1) then
/* do stuff */
else
RaiseError("invalid context data", 1) /* 1 means skip the subscriber */
endif
]%%
You could use a Server-side JavaScript try/catch with AMPscript, but additional overhead is a byproduct.