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