Introduction
A ValueError is thrown when the
type of an argument is correct but its value is incorrect.
For example, passing a negative integer when the function expects a
positive one, or passing an empty string/array when the function expects
it to not be empty.