If it's not returning -1, it's not actually entering the catch blocks. The fact it continues on with the function after that is proof. It's going past the try...catch successfully, meaning no exception was thrown.
Also, unless your compiler has a switch to catch access violations as C++ exceptions, there's nothing which can generate an exception, it's all memory copying which is guaranteed not to throw a (C++) exception. Even if you can tell your compiler to catch an access violation, you'd need to catch with a catch(...), so the catch statements you have are useless, they'll never actually catch anything. Those catch statements are effectively unreachable code, in fact your compiler may have completely removed them.
Whatever your bug is, it's not in the code you pasted.
And yes, the bug is in your code somewhere, but it's not in the code you listed.