Hola darkmir.
Tratándose de tantos directorios y archivos, seguramente la
profundidad (cantidad de carpetas/subcarpetas hasta el nodo) sea muy grande y por tanto las llamadas recursivas del algoritmo agoten la memoria destinada a la pila.
Al usar
try/catch evitas que se lance la excepción, pero lamentablemente no va a cumplir el cometido. En este caso creo que hay que descartar la solución recursiva...
Saludos