throw an exception rather than assert - this is really an error condition