As said asserts are not intended to filter out user data, they are there to catch programming errors. If your user can pass you incorrect data, then it's the developer's job to sanitize it and if needed show error messages and handle the error. If the developer's not done his/hers job properly, then it should trip an assertion which is to show that the situation should be fixed. This is not a way to "slap developer's ego" but to catch their misses.