To answer your question specifically, that's a compiler peculiarity. A different compiler (maybe just a different version) would give you a somewhat less confusing error, such as integer number too large: 09 instead of tripping on the cast, which in your case is not even possible, since the number is invalid.
The issue in your code is that you are trying to define an integer (or a short in your case) in an octal notation because you are starting the number with a leading 0. In octal notation digits can only be between 0 and 7. So an octal number written as 09 does not exist.
So both things combined confused your compiler a bit.