The only difference between your code segments is one causes the script to abort, and the other doesn't. However, if you put @serror after your illegal array element, you get: "The storage control block address is invalid."

I'm not sure what you are hoping for, but referencing elements outside the bounds of the array is bad either way.
_________________________
(... better days ahead)