To add to what CPallini says, why is a negative number an invalid value?
3 * -1 == -3
3 * -2 == -6
...
-3 * 1 == -3
-3 * 2 == -6
...
-3 * -1 == 3
-3 * -2 == 6
...
Instead of rejecting negative inputs, you should be working out the sign of the result, using the absolute values of the inputs, and applying the sign to the product you generate.
It would also be an idea to ensure that the lowest value is used as the loop guard, or 2 * 100000000 will take a lot longer to evaluate than 100000000 * 2.
It might also be worth looking at implementing a decimal or binary version of "long multiplication" if you want efficiency with larger numbers:
69 * 72 == 690 * 7 + 69 * 2