No necesito una lección para pasar de los medios recursivos a los no recursivos, solo quiero saber por qué no podemos tratar este tipo de excepción. De todos modos, estoy usando funciones recursivas en listas muy grandes.C# - ¿Cómo maneja/captura StackOverFlowExceptions?
He escrito código para intentar coger StackOverFlowExceptions:
try { recursiveFxn(100000); }
catch(Exception){}
private void recursiveFxn(int countdown)
{
if (countdown > 0)
recursiveFxn(countdown - 1);
else
throw new Exception("lol. Forced exception.");
}
Pero aún así me sale errores en el programa (tanto en NUnit y una página web que estoy corriendo). ¿Por qué no se captura la excepción?
me sorprende que exista esta excepción ... fuera del código administrado, no estoy seguro de que sea posible recuperar este error en general. –
@RobertKarl: Ojalá hubiese un medio a través del cual el código pudiera verificar explícitamente la pila para una cierta cantidad de espacio, con una excepción lanzada si el espacio no estaba disponible. Si dicho método arrojó la excepción antes de que la pila se desbordara, y si la cantidad de espacio solicitado era al menos igual a la suma del máximo de la pila que se asignará entre las pruebas, más la cantidad requerida para el código de recuperación, tales excepciones podrían ser 100% recuperable. Tal como están las cosas, no sé cómo escribir código recursivo seguro que no limite artificialmente la profundidad de las estructuras que puede manejar. – supercat