Yes, it only handles Errors and arrays. But you are suggesting that it should only handle Errors? Not much of an improvement.
Instant access to error message: ((array)e)[0] Instant access to backtrace: ((array)e)[1]
But yes, it would be nice if more builtin errors were objects instead of arrays.