El manejo de excepciones en C ++ se limita a try / throw / catch. A diferencia de Object Pascal, Java, C # y Python, incluso en C ++ 11, la finally
construcción no se ha implementado.
He visto una gran cantidad de literatura de C ++ sobre "código seguro de excepción". Lippman escribe que el código seguro de excepción es un tema importante pero avanzado y difícil, más allá del alcance de su Manual, lo que parece implicar que el código seguro no es fundamental para C ++. ¡Herb Sutter dedica 10 capítulos al tema en su Excepcional C ++!
Sin embargo, me parece que muchos de los problemas encontrados al intentar escribir "código seguro de excepción" podrían resolverse bastante bien si finally
se implementara la construcción, lo que le permite al programador asegurarse de que incluso en caso de una excepción, el programa pueda restaurarse a un estado seguro, estable y sin fugas, cerca del punto de asignación de recursos y código potencialmente problemático. Como programador muy experimentado de Delphi y C #, uso try .. finalmente bloquea bastante en mi código, al igual que la mayoría de los programadores en estos lenguajes.
Teniendo en cuenta todas las 'campanas y silbatos' implementados en C ++ 11, me sorprendió descubrir que 'finalmente' todavía no estaba allí.
Entonces, ¿por qué la finally
construcción nunca se ha implementado en C ++? Realmente no es un concepto muy difícil o avanzado de comprender y ayuda mucho al programador a escribir 'código seguro de excepción'.
finally
en C ++, y qué técnicas para el manejo de excepciones se utilizan en su lugar?" es válido y está en el tema de este sitio. Las respuestas existentes cubren esto bien, creo. Convirtiéndolo en una discusión sobre "¿Son finally
valiosas las razones de los diseñadores de C ++ para no incluirlas ?" y "¿Debería finally
agregarse a C ++?" y continuar la discusión a través de los comentarios sobre la pregunta y cada respuesta no se ajusta al modelo de este sitio de preguntas y respuestas.