The building a hash was just an example, not the point of the function. For the function in general, no error checking is possible because
there are no error conditions.
Every input has a well-defined output.
For instance, interleave() returns an empty list, interleave('a'..'e') returns ('a','d','b','e','c').
Given actual arrays, I would be more likely to say:
%h = ();
@h{@keys} = @values;