Puede que estes recogiendo la excepción en un sitio inadecuado, estas van ascendiendo desde las funciones donde se lanzan hasta el main, por ejemplo:
Si tienes una función 'function', en la cual lanzas una excepción, si tienes el catch para ESE TIPO de excepción en 'function', la capturará ahí, si no, ascenderá hacia la función "padre", por llamarla así, es decir, si desde el main llamas a 'function', la excepción asciende al main, ahora, si ahí la capturas, perfecto, pero si no la capturas ahí, te peta la aplicación
.
Espero haberme explicado bien
Saludos