When Java was originally created, the language designers did that way. I'm not sure why, but if it had it certainly would have a performance penalty in raising Exceptions.
"The lesson for language designers is that it may be worth reducing the likelihood of silent overflow.
This could be done by providing support for arithmetic that does not overflow silently. Programs
could throw an exception instead of overflowing, as does Ada, or they could switch to a larger
internal representation automatically as required to avoid overflow, as does Lisp. Both of these
approaches may have performance penalties associated with them. Another way to reduce the
likelihood of silent overflow is to support target typing, but this adds significant complexity to the
type system [Modula-3 1.4.8]."
Courtesy - Java puzzlers traps and pitfalls by Joshua Bloch & Neal Gafter