This is a question of numpy design, but I would suggest raising a TypeError here rather than the OverflowError.  The latter is not raised by code anywhere else in numpy.  The vast majority of user input errors are flagged via ValueError, and a minority with TypeError, so these are the ones users expect to see.  In the case above, the OverflowError is really indicating that the user tried to supply a fill_value of inappropriate type, so raising TypeError is reasonable.